微服务认证方案

微服务认证参与者:

springcloud gateway、auth、system、redis

1、网关对于auth

a) 网关负责生成验证码,校验验证码(针对如下URL)

    private final static String[] VALIDATE_URL = new String[] { "/auth/login", "/auth/register" };

b) 网关对于所有URL进行权限校验 ,如下白名单URL除外

- /auth/logout
- /auth/login
- /auth/register
 

2、网关校验token

是否合法、是否登录,通过的话 转发请求至后台服务,并携带着token,请求头里面还可以加入其他信息,例如用户名称、用户ID等等。

3、后台服务

如果请求头有token,则会判断其合法性、是否超时、获取loginuser信息到上下文环境,通过的话,更新登录超时事件,如果请求头没有header的话放行,进行下一步判断:
对于@RequiresPermissions 注解的方法校验是否具有权限;
对于@InnerAuth 注解的方法校验是否是内部服务调用,是的话直接放行(例如auth获取用户信息,直接feign内部调用)。

String source = ServletUtils.getRequest().getHeader(SecurityConstants.FROM_SOURCE);

posted on 2022-02-23 11:56  TrustNature  阅读(262)  评论(0编辑  收藏  举报