搭建Spring Security OAuth2认证服务,经常会遇到在资源服务器中配置生效,但是在web安全配置类中配置就不生效等等类似的问题,深入研究了下原来是三个类在IOC容器之中加载的优先级问题所造成的,下面我们就一步一步来分析下三个类的优先级问题; @EnableAuthorizationS
OAuth2AccessToken接口的默认实现是DefaultOAuth2AccessToken类(自带过期时间属性) OAuth2RefreshToken接口的默认实现是DefaultOAuth2RefreshToken类(不带过期时间属性) ExpiringOAuth2RefreshToken
Spring Security OAuth2存储token值的方式 Spring Security OAuth2存储token值的方式有多种,所有的实现方式都是实现了TokenStore接口 InMemoryTokenStore:token存储在本机的内存之中 JdbcTokenStore:tok
Redis用户登出有两种方案,一种是通过资源服务器配置logoutSuccessHandler处理函数,并实现LogoutSuccessHandler接口来处理退出用户; 另外一种是自定义封装接口,通过RedisTokenStore来删除用户信息的形式; 通过资源服务器或认证服务器配置的方式 W
/oauth/token 端点 端点过滤器TokenEndpointAuthenticationFilter 端点对应的action类TokenEndpoint 受保护的资源信息类ResourceOwnerPasswordResourceDetails 和认证服务器交互资源信息类ResourceO
两个异常处理的接口 AuthenticationEntryPoint:用来解决匿名用户访问无权限资源时的异常,也就是跟token相关的资源异常 AccessDeniedHandler:用来解决认证过的用户访问无权限资源时的异常,主要跟权限控制相关 自定义AuthenticationEntryPoi
认证服务器默认返回的数据格式如下: { "error": "unsupported_grant_type", "error_description": "Unsupported grant type: passwo
资源服务器相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifa
四种授权码模式 授权码模式 密码模式 客户端模式 简化模式 密码模式 grant_type:授权类型,必选,此处固定值“password” username:表示用户名,必选 password:表示用户密码,必选 scope:权限范围,可选 (1)获取access_token http:/
POM相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifact
四种授权模式 授权码模式 密码模式 客户端模式 简化模式 密码模式 grant_type:授权类型,必选,此处固定值password username:表示用户名,必选 password:表示用户密码,必选 scope:权限范围,可选 (1)获取access_token http://lo
使用JSON Web Token的好处 性能问题 验证信息可以由前端保存,后端不需要为保存token消耗内存。JWT方式将用户状态分散到了客户端中,相比于Session,可以明显减轻服务端的内存压力。 Session方式存储用户id的最大弊病在于Session是存储在服务器端的,所以需要占用大量服
//对象拷贝 BeanUtils.copyProperties(object, object) //集合工具 CollectionUtils.isEmpty(list) List<Long> ids = items.stream().map(p -> p.getId()).col
Java原生算法 //核心代码,检索IP所属网段 public boolean isInRange(String ip, String cidr) { String[] ips = ip.split("\\."); long ipAddr = (Long.pars
参考:https://github.com/bihe0832/Android-GetAPKInfo ApkInfo @Data @NoArgsConstructor public class ApkInfo { public String versionCode = ""