有一个spring boot应用程序,有n个oauth客户端配置:
spring.security.oauth2.client.registration.number1.client-id = ....
spring.security.oauth2.client.registration.number1.scope = openid,...
....
spring.security.oauth2.client.registration.number2
...
spring.security.oauth2.client.registration.numberN
...
我相信可以配置下一个场景:
假设\将一些注册(让它先注册)标记为主要注册。只有通过此注册才能实现身份验证(同时接收id\u令牌和access\u令牌)
将获得其他授权:
按需-通过已知请求参数路由
在某个条件下-假设我们在根页面“/”(单页应用程序),然后循环通过所有注册以获得所有访问令牌。是的,用户将被重定向到不同的idp n次。
现在的问题是 SecurityContextHolder
在完成任何客户端注册流后,用新的主体权限填充,覆盖以前的值。我在需要的地方使用了类似的代码段:
Authentication principal = SecurityContextHolder.getContext().getAuthentication(); // can be spoiled
if (principal == null) {
principal = ANONYMOUS_AUTHENTICATION;
}
OAuth2AuthorizeRequest authRequest = OAuth2AuthorizeRequest.withClientRegistrationId(primaryRegId)
.principal(principal)
.attribute(HttpServletRequest.class.getName(), servletRequest)
.attribute(HttpServletResponse.class.getName(), servletResponse)
.build();
oAuth2AuthClientManager.authorize(authRequest);
我该怎么办?有没有可能命令spring不重设身份验证,而只获取访问令牌?
我找到了一些关于多租户的信息,但它是关于resourceserver端的—在声明时验证jwt令牌—在现阶段这不是我的情况。
暂无答案!
目前还没有任何答案,快来回答吧!