작성
·
432
·
수정됨
0
subject_type을 pairwise로 변경 하려고 Spring Authorization Server 공식 문서(현재 1.0.1)와 소스(1.0.1과 강의에 사용된 0.31) 소스를 봐도 subject_type 를 변경하는 API는 찿지 못했는데 Spring Authorization Server 에서는 지원하지 않는 걸까요?
문서를 참조하여 acesss token 과 id token 의 cliams 정보를 커스터마이징한 소스에서 pairwise 유형으로 설정하고 providerConfigurationEndpoint을 커스텀 하여 openid-configuration discovery metadata 의 정보를 변경하면 될까요?
@Bean
public OAuth2TokenGenerator<?> tokenGenerator(JWKSource<SecurityContext> jwkSource) {
JwtEncoder jwtEncoder = new NimbusJwtEncoder(jwkSource);
JwtGenerator jwtGenerator = new JwtGenerator(jwtEncoder);
jwtGenerator.setJwtCustomizer(jwtCustomizer());
OAuth2AccessTokenGenerator accessTokenGenerator = new OAuth2AccessTokenGenerator();
OAuth2RefreshTokenGenerator refreshTokenGenerator = new OAuth2RefreshTokenGenerator();
return new DelegatingOAuth2TokenGenerator(
jwtGenerator, accessTokenGenerator, refreshTokenGenerator);
}
@Bean
public OAuth2TokenCustomizer<JwtEncodingContext> jwtCustomizer() {
return context -> {;
JwtClaimsSet.Builder claims = context.getClaims();
OidcUserResponseDto user = (OidcUserResponseDto)context.getPrincipal().getPrincipal();
claims.subject(user.getEmpId());
claims.claim("dept_id", user.getDeptId());
claims.claim("locale", user.getLocale());
};
}
.........
authorizationServerConfigurer.tokenGenerator(tokenGenerator);
참고 현재 설정된 openid-configuration의 subject_types_supported 정보
답변 1
0
네
일단 메타데이터를 변경하는 API 는 제공하고 있습니다.
@Configuration(proxyBeanMethods = false)
public class AuthorizationServerConfig {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfigurer authorizationServerConfigurer = new OAuth2AuthorizationServerConfigurer();
http.apply(authorizationServerConfigurer);
authorizationServerConfigurer
.authorizationEndpoint(Customizer.withDefaults());
// 메타데이터 커스트마이징
authorizationServerConfigurer.oidc(OidcConfigurer ->
OidcConfigurer.providerConfigurationEndpoint(config ->
config.providerConfigurationCustomizer(providerConfiguration -> providerConfiguration.subjectType("pairwise"))));
위 코드처럼 선언하면 메타데이터의 각 항목의 지원하는 값들은 추가 및 변경이 가능합니다.
그리고 말씀하신 것 처럼 실제로 pairwise 타입을 지원하기 위한 클레임 값을 커스트마이징하도록 구현해 주어야 합니다.
http://localhost:19001/iam/.well-known/openid-configuration 로 요청해 보면
로 추가되고
변경된 항목이 보여지고 있습니다.