spring oauth2客户端多租户

eivnm1vs  于 2021-07-18  发布在  Java
关注(0)|答案(0)|浏览(652)

有一个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令牌—在现阶段这不是我的情况。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题