SpringSecuryty中的常用配置类
常用配置类
WebSecurityConfigurerAdapter
Spring Security 的基本配置。
OAuth2
认证服务器
AuthorizationServerConfigurerAdapter
配置授权服务器。
记得加上 @EnableAuthorizationServer 注解,表示开启授权服务器的自动化配置。
在写 AuthorizationServerConfigurerAdapter 子类中,我们其实主要重写三个 configure 方法。
-
AuthorizationServerSecurityConfigurer :用来配置令牌端点的安全约束,也就是这个端点谁能访问,谁不能访问。
checkTokenAccess 是指一个 Token 校验的端点,这个端点我们设置为可以直接访问(在后面,当资源服务器收到 Token 之后,需要去校验 Token 的合法性,就会访问这个端点)。
-
ClientDetailsServiceConfigurer :用来配置客户端的详细信息
授权服务器要做两方面的检验,一方面是校验客户端,另一方面则是校验用户,校验用户,WebSecurityConfigurerAdapter 中配置,这里就是配置校验客户端。客户端的信息我们可以存在数据库中。授权类型一共是四种,四种之中不包含 refresh_token 这种类型,但是在实际操作中,refresh_token 也被算作一种。
-
AuthorizationServerEndpointsConfigurer :这里用来配置令牌的访问端点和令牌服务。
TokenStore
这个是指你生成的 Token 要往哪里存储,我们可以存在 Redis 中,也可以存在内存中,也可以结合 JWT 等等。
AuthorizationServerTokenServices
这个 Bean 主要用来配置 Token 的一些基本信息,例如 Token 是否支持刷新、Token 的存储位置、Token 的有效期以及刷新 Token 的有效期等等。Token 有效期这个好理解,刷新 Token 的有效期我说一下,当 Token 快要过期的时候,我们需要获取一个新的 Token,在获取新的 Token 时候,需要有一个凭证信息,这个凭证信息不是旧的 Token,而是另外一个 refresh_token,这个 refresh_token 也是有有效期的。
AuthorizationCodeServices
用来配置授权码的存储,这里我们是存在在内存中,tokenServices 用来配置令牌的存储,即 access_token 的存储位置。
资源服务器
大家网上看到的例子,资源服务器大多都是和授权服务器放在一起的,如果项目比较小的话,这样做是没问题的,但是如果是一个大项目,这种做法就不合适了。
ResourceServerConfigurerAdapter
配置资源服务器
ResourceServerTokenServices
如果资源服务器和授权服务器是分开的,就需要配置该实现类,资源服务器和授权服务器是放在一起的,就不需要配置 RemoteTokenServices 了。
该接口实现如下
RemoteTokenServices
配置项如下
RemoteTokenServices services = new RemoteTokenServices();
services.setCheckTokenEndpointUrl("http://localhost:8080/oauth/check_token");
services.setClientId("javaboy");
services.setClientSecret("123");
return services;ces;
配置了 access_token 的校验地址、client_id、client_secret 这三个信息,当用户来资源服务器请求资源时,会携带上一个 access_token,通过这里的配置,就能够校验出 token 是否正确等。
ResourceServerSecurityConfigurer
资源配置
resources.resourceId("res1").tokenServices(ResourceServerTokenServices);