一、zuul网关
1、首先起作用的是 secruity的 FilterChainProxy,过滤器链
1、OAuth2ClientAuthenticationProcessingFilter:单点登录的拦截类
2、public OAuth2RestOperations restTemplate;
OAuth2RestTemplate 实现了OAuth2RestOperations 接口,使用getAccessToken 方法,方便获取token
3、AuthorizationCodeAccessTokenProvider:sso中提供的默认的token获取方式---code方式
(1)判断有没有code,没有code时(state也同步判断了),会抛出一个UserRedirectRequiredException异常
4、OAuth2ClientContextFilter:拦截了UserRedirectRequiredException异常,重定向到 申请验证码的请求
5、后续进入到oauth2-server的验证
6、 oauth2 完成申请验证码后,会回调redirect_uri=http://127.0.0.1:9500/login,并已经携带了code和state
7、gateway再次获取token,已经有了code,所以后台发起了oauth/token,则直接成功,并回调到admin/index.html界面
综上,具体可以查看源码。附一个简单的流程图:
网友评论