728x90

- ClientRegistrationRepository는 OAuth 2.0 & OpenID Connect 1.0의 ClientRegistration 저장소 역할을 한다.
- 클라이언트 등록 정보는 궁극적으로 인가 서버가 저장하고 관리하는데 이 레포지토리는 인가 서버에 일차적으로 저장된 클라이언트 등록 정보의 일부를 검색하는 기능을 제공한다.
- 스프링 부트 2.X 자동 설정은 spring.security.oauth2.client.registration.[registrationId] 하위 프로퍼티를 ClientRegistration 인스턴스에 바인딩하며, 각 ClientRegistration 객체를 ClientRegistrationRepository 안에 구성한다.
- ClientRegistrationRepository의 디폴트 구현체는 InMemoryClientRegistrationRepository 다.
- 자동 설정을 사용하면 ClientRegistrationRepository 도 ApplicationContext 내 @Bean으로 등록하므로 필요하다면 원하는 곳에 의존성을 주입할 수 있다.
빈 등록하기

- yml로도 설정이 가능하다.
Test
@Configuration
public class OAuth2ClientConfig {
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(keycloakClientRegistration());
}
private ClientRegistration keycloakClientRegistration() {
//ClientRegistration 을 만드는 유틸성 클래스
return ClientRegistrations
.fromIssuerLocation("http://localhost:8080/realms/oauth2")
.registrationId("keycloak")
.clientId("oauth2-client-app")
.clientSecret("xSlqD456gfAeLZO93BLbTwQys0NEc8KL")
.redirectUri("http://localhost:8081/login/oauth2/code/keycloak")
.build();
}
}
Index
@RestController
public class IndexController {
@Autowired
private ClientRegistrationRepository clientRegistrationRepository;
@GetMapping("/")
public String index(){
ClientRegistration clientRegistration = clientRegistrationRepository.findByRegistrationId("keycloak");
String clientId = clientRegistration.getClientId();
System.out.println("clientId = " + clientId);
String redirectUri = clientRegistration.getRedirectUri();
System.out.println("redirectUri = " + redirectUri);
return "index";
}
}
- 빈으로 등록한 ClientRegistrationRepository를 컨트롤러에서 확인할 수 있다
728x90
'스프링 시큐리티 OAuth2 > OAuth 2.0 Client Fundamentals' 카테고리의 다른 글
| 자동설정에 의한 초기화 과정 이해 (0) | 2023.01.15 |
|---|---|
| ClientRegistration 이해 및 활용 (0) | 2023.01.15 |
| 클라이언트 앱 시작하기 - application.yml/ OAuth2ClientProperties (0) | 2023.01.14 |