spring-security Spring OAuth2 OIDC -正在获取用于授权的用户信息和AD组信息

noj0wjuj  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(146)

我是Sping Boot 和Spring Security的新手。我有一个使用Spring boot的微服务项目。在我的网关应用程序中,我使用OAuth2进行身份验证。身份验证提供程序来自我的组织,它是OIDC实现。
我使用oauth2资源服务器通过配置 jwk-set-urijwk-set-uri 属性来验证不记名令牌。

  • Spring启动器腹板=〉2.6.7
  • =〉2.6.7版本的服务器
  • spring security =〉5.6.3
    应用程序.属性
spring.security.oauth2.resourceserver.jwt.issuer-uri=https://<org-auth-url>.com
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://<org-auth-url>/<jwk-uri>

使用上面的配置,验证工作正常。所以我没有添加任何安全配置类。但是对于授权和其他处理,如在控制器中获取用户数据,我需要用户信息和AD组详细信息。
我有用户信息端点URL,当我在postman客户端测试它时,响应中包含用户信息沿着AD组。
如何获取授权的用户详细信息?

dm7nw8vv

dm7nw8vv1#

好的,我会的
您已经添加了所需的uri。很好。
现在需要添加一些配置:

@Configuration
@EnableWebSecurity
public class OAuth2ResourceServerSecurityConfiguration {

    @Value("${spring.security.oauth2.resourceserver.jwt.jwk-set-uri}")
    String jwkSetUri;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

        http
                .authorizeHttpRequests((authorize) -> authorize
                        .requestMatchers(HttpMethod.GET, 
                     ///// more your requestMatchers ///// 

                        .anyRequest().authenticated()
                )
                .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);

        return http.build();
    }

    @Bean
    JwtDecoder jwtDecoder() {
        return NimbusJwtDecoder.withJwkSetUri(this.jwkSetUri).build();
    }

}

现在,您应该能够在控制器中接收带有@AuthenticationPrincipal注解的jwt声明。

@RestController
public class YourController {

    @GetMapping("/")
    public String doAnything(@AuthenticationPrincipal Jwt jwt) {
        return jwt.getSubject();
    }
}

请添加更多的信息,我会尽量解释得更好:-)
====UPD====
official manual在这上面真的很有用。
官方code samples

相关问题