gpt4 book ai didi

java - 如何使用 Spring Oauth2 将 UserDetails 附加到从 JWT token 接收的主体

转载 作者:行者123 更新时间:2023-11-30 06:12:19 25 4
gpt4 key购买 nike

我有这些服务

  • 使用 JDBC 提供程序 (DB-1) 的 oauth2 身份验证服务器
  • 支持 Zuul 的 Web 应用程序,将请求代理到 authserver 和资源服务器
  • 启用@EnableOauth2Resource (DB-2) 的资源

我需要使用从 DB-1 收到的凭据从 DB-2 获取资源服务器中的用户详细信息,并将启用的权限设置为当前主体,以便进一步使用 @RolesAllowed 注释的 @PreAuthorize。

在使用 oauth2 token 成功验证后,是否有一些钩子(Hook)可以替换或更新 org.springframework.security.oauth2.provider.OAuth2Authentication?

最佳答案

我通过将我的资源服务器配置为...获得了资源服务器的主体

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {


public ResourceServerConfiguration() {
super();
}


@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated();
}

/* returns org.springframework.security.core.userdetails.UserDetailsService */
@Bean
UserDetailsService customUserDetailsService () {
return new CustomUserDetailsService();
}

@Bean
public UserAuthenticationConverter userAuthenticationConverter () {
DefaultUserAuthenticationConverter defaultUAC = new DefaultUserAuthenticationConverter();
defaultUAC.setUserDetailsService(customUserDetailsService());
return defaultUAC;
}

@Bean
public AccessTokenConverter accessTokenConverter() {
DefaultAccessTokenConverter defaultATC = new DefaultAccessTokenConverter();
defaultATC.setUserTokenConverter(userAuthenticationConverter());
return defaultATC;
}

@Bean
RemoteTokenServices getRemoteTokenServices () {
RemoteTokenServices rts = new RemoteTokenServices();
rts.setCheckTokenEndpointUrl("http://localhost:9999/uaa/oauth/check_token");
rts.setAccessTokenConverter(accessTokenConverter());
rts.setClientId("yourClientID");
rts.setClientSecret("yourClientSecret");
return rts;
}
...

}

基本上,我们在这里通过从 accesstoken 获取身份验证信息来使用 customUserDetailsS​​ervice 更新资源服务器上的身份验证主体。 RemoteTokenServices 查询 auth-server 的 /check_token 端点以获取访问 token 的内容。如果端点返回 400 响应,则表示 token 无效。

关于java - 如何使用 Spring Oauth2 将 UserDetails 附加到从 JWT token 接收的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33020277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com