尝试将OAuth授权代码交换为令牌时遇到问题。
我的设置是这样
- OAuth客户端(可能是Angular应用)
- 我的Spring OAuth授权服务器的两个实例,充当身份提供者,使用循环均衡策略在负载均衡器后面运行
- 密钥斗篷(充当身份代理)
使用我的身份提供程序中的用户登录时的事件顺序是这样的:
- 由于没有令牌,用户访问受保护的页面并重定向到Keycloak。 Keycloak重定向到其默认身份提供者,该提供者返回登录页面
- 用户登录。对身份提供者的/ login网址进行POST
- 登录成功。用户被重定向到身份提供者的/ oauth / authorize URL。身份提供者在这里生成授权码,并将重定向返回给Keycloak。
- 用户的浏览器使用授权代码重定向到Keycloak。 Keycloak尝试通过调用身份提供者的/ oauth / token端点来交换令牌的授权代码。
- 对IdP的/ oauth / token端点的调用失败,因为处理请求的IdP实例对身份验证代码一无所知。身份验证代码是由IdP的另一个实例发出的。
Spring是否可以将生成的授权代码存储在某种缓存(Redis)或数据库中?我该怎么办?