【发布时间】:2019-10-13 18:07:54
【问题描述】:
我为 AuthServer 设置了 spring boot OAuth,它可以使用 spring-security-jwt 为一些资源服务器提供身份验证服务。
我的问题是在进行身份验证时我需要加载用户的角色,但特定于 clientId。
例如:如果 user1 有角色 ROLE_A、ROLE_B 用于 client1 和 ROLE_C、ROLE_D 用于 client2,那么当用户使用 client1 或 client2 登录时,他能够看到所有四个角色,即。 ROLE_A, ROLE_B, ROLE_C, ROLE_D 因为我正在根据用户名获取角色。
如果我需要基于客户端的角色,那么我需要 clientId。
供参考,
我正在使用授权代码流进行身份验证。
我见过类似的问题,但这是基于密码授予,但我正在尝试授权代码流,该解决方案对我不起作用。
密码授予问题link
下面是我需要 clientId
MyAuthenticationProvider.java
@Override
public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
String userName = ((String) authentication.getPrincipal()).toLowerCase();
String password = (String) authentication.getCredentials();
String clientId = ? // how to get it
....
}
}
MyUserDetailsService.java
@Override
public UserDetails loadUserByUsername(String username) {
String clientId = ? // how to get it
....
}
}
【问题讨论】:
标签: spring-boot jwt spring-security-oauth2