赞
踩
上一节介绍了认证中心,这节介绍下网关如何集成认证中心实现网关的统一认证授权。
木谷博客系统的整个认证授权架构设计如下图:
网关在这里的主要功能就是6-8这三步:
对令牌的有效性进行校验,只需要实现ReactiveAuthenticationManager这个接口,其中authenticate进行校验,主要逻辑:根据tokenStore解析JWT令牌,然后对其中的过期时间、签名进行校验。代码如下:
第一处的代码主要是解析令牌的基本想信息,比如令牌的类型,过期时间
第二处的代码是解析令牌携带的用户身份信息,比如用户的用户名…
木谷博客系统中的鉴权仅仅是针对接口,其他的一些系统有别的资源,比如前端的按钮、页面。。。
鉴权只需要实现ReactiveAuthorizationManager这个接口,实现其中的check方法。
自定义com.mugu.blog.gateway.config.JwtAuthorizationManager,主要逻辑如下:
木谷博客系统目前未登录的用户是可以直接访问的,因此无需鉴权,将前端涉及到的接口设置到白名单即可。
白名单只需要在配置文件中配置即可,前缀为:oauth.server.ignore
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "oauth.server.ignore")
@Data
public class WhiteUrls {
private List<String> urls;
}
在nacos中查看下blog-gateway.yaml,白名单配置如下:
oauth: # JWT令牌的key server: ignore: urls: - /blog-auth-server/oauth/token - /blog-auth-server/oauth/authorize - /blog-auth-server/oauth/check_token - /swagger-ui.html - /swagger-ui/* - /swagger-resources/** - /v2/api-docs - /v3/api-docs - /webjars/** - /doc.html - /**/v2/api-docs - /blog-article/front/** - /blog-picture/front/** - /blog-friendlinks/front/** - /blog-comments/comment/list - /blog-comments/comment/add - /blog-comments/message/add - /blog-comments/message/list - /actuator/** - /instances/**
想要白名单生效,只需要在Spring Securtiy的配置文件中(com.mugu.blog.gateway.config.SecurityConfig)设置过滤规则,代码如下:
token校验、鉴权通过后,网关层面需要将token中携带的用户信息解析,传递给下游服务,这样下游服务就不必重新解析了。
大致逻辑:
1、定义过滤器
使用的是Gateway的全局过滤器GlobalFilter,定义如下:
/**
* @author 公众号:码猿技术专栏
* 全局过滤器,对token的拦截,解析token放入header中,便于下游微服务获取用户信息
* 分为如下几步:
* 1、白名单直接放行
* 2、校验token
* 3、读取token中存放的用户信息
* 4、重新封装用户信息,加密成功json数据放入请求头中传递给下游微服务
com.mugu.blog.gateway.filter.GlobalAuthenticationFilter
*/
@Component
@Slf4j
public class GlobalAuthenticationFilter implements GlobalFilter, Ordered {}
2、解析token
通过TokenStore获取令牌中的身份信息,代码如下:
主要逻辑就是从additionalInformation中取出增强的信息
3、封装、加密放入请求头
第二步将令牌解析,获取了全部的身份信息,此时的通过JSONObject将这些用户信息封装、加密,放入请求头中,如下:
这样一来,下游微服务只需要从请求头中取出信息,进行解密即可。
在全局过滤器中还有一个重要步骤:黑名单的校验
在第9节中介绍到:用户注销登录,则将该JWT放入redis黑名单中,失效时间为令牌剩余过期时间。
因此在过滤器中必须对黑名单进行检验,如果该JWT已经被加入了黑名单,则直接拦截。
代码如下:
本节课主要介绍了网关层面的认证和授权,主要内容如下:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。