【发布时间】:2022-01-18 14:16:40
【问题描述】:
我有一个配置为使用 Spring 用户规则作为安全方法的现有资源服务器。我正在尝试迁移到 Spring Authorization 服务器,并试图弄清楚如何在资源服务器中访问这些角色。
当用户进行身份验证时,我可以在调试日志中看到我的角色是授权用户详细信息的一部分。但在资源服务器中,我从 OidcService 获取默认角色,并将范围作为授予权限。
我知道 Spring Authorization server 0.21 已经实现了 User Info 端点,但似乎没有关于如何配置它的示例或文档,我确信实现它会解决我的问题。
我正在考虑的另一个选项是在服务器中配置 oauth2TokenCustomizer,然后在 JWT 的声明中添加角色。然后在资源服务器中考虑覆盖默认 OidcService 并解析声明以添加角色作为授予权限。但问题在于 OidcUserService 我没有看到任何可以让我访问 JWT 声明的代码。
public class CustomOAuth2Token implementsOAuth2TokenCustomizer<JwtEncodingContext> {
@Override
public void customize(JwtEncodingContext context) {
// Load user details and add roles to claims
}
}
可能必须为 OidcAuthorizationCodeAuthenticationProvider 提供自定义扩展,然后修改经过身份验证的主体详细信息。
【问题讨论】:
-
请参阅文档中的Extracting Authorities Manually。
标签: spring spring-boot spring-security