点击上方蓝色字体,关注我们
1、 前言
在上一篇 Oauth2 的认证实战-HA 篇 中,我们说过 Oauth2 的高可用方案,但其实其场景仅仅在于密码模式下,如果是授权码模式下,将有点瑕疵,甚至需要配置其他的 hosts 来进行处理。
2、Oauth2 的授权码模式
2.1 回忆
我们先回忆下,上一篇中如何做到 HA 的:首先各个客户端配置中配置了的认证中心是用域名的,也就是说通过服务发现来实现多个认证中心可以同时存在,并且通过 redis 来存储 token,达到共享的目的。其次,在配置中注意:加了"loadBalanced: true",另外在调用各个客户端时,我们通过网关来进行负载均衡的:"http://localhost:5555/provider-service/api/user/**",这样才能达到高可用的目的。
2.2 授权码模式下的高可用
-
获取授权码
在授权码模式下,在 postman 或其他工具输入:
localhost:5555/oauth-cas/oauth/authorize?response_type=code&client_id=provider-service&redirect_uri=http://provider-service/login&scope=all
发现会被拦截到登陆页:
大家注意看,其地址是经过负载均衡后解析的地址。在输入用户名、密码后,发现:
重定向到地址的前缀跟上面的登陆页一样,而且未带有 code 参数属性,这一点让我百思不得其解,需要后面的解析,谢谢。
但通过单机版的测试:
http://localhost:2000/oauth/authorize?response_type=code&client_id=provider-service&redirect_uri=http://provider-service/log