OAuth 2.0 Client - ClientRegistrationRepository
ClientRegistrationRepository ๋
OAuth 2.0,Open Id Connect 1.0์ ClientRegistration ์ ์ฅ์ ์ญํ ์ ํ๋ค.ํด๋ผ์ด์ธํธ ๋ฑ๋ก ์ ๋ณด๋ ๊ถ๊ทน์ ์ผ๋ก ์ธ๊ฐ ์๋ฒ๊ฐ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋๋ฐ ์ด ๋ ํฌ์งํ ๋ฆฌ๋ ์ธ๊ฐ ์๋ฒ์ ์ผ์ฐจ์ ์ผ๋ก ์ ์ฅ๋ ํด๋ผ์ด์ธํธ ๋ฑ๋ก ์ ๋ณด์ ์ผ๋ถ๋ฅผ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์คํ๋ง ๋ถํธ ์๋ ์ค์ ์ผ๋ก
spring.security.oauth2.client.registration.[registrationId]ํ์ ์ ๋ณด๋ฅผ ClientRegistration ์ธ์คํด์ค์ ๋ฐ์ธ๋ฉํ๋ฉฐ, ๊ฐ ClientRegistration ๊ฐ์ฒด๋ฅผClientRegistrationRepository์์ ๊ตฌ์ฑํ๋ค.ClientRegistrationRepository์ ๊ธฐ๋ณธ ๊ตฌํ์ฒด๋ InMemoryClientRegistrationRepository ์ด๋ค.์๋ ์ค์ ์ ์ฌ์ฉํ๋ฉด
ClientRegistrationRepository๋ ๋น์ผ๋ก ๋ฑ๋ก๋๋ฏ๋ก ์ํ๋ ๊ณณ์ ์์กด์ฑ์ ์ฃผ์ ํ ์ ์๋ค.
ClientRegistration / ClientRegistrationRepository ์๋ ๋น ๋ฑ๋ก ์์
@Configuration
public class OAuth2ClientConfig {
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(keyCloakClientRegistration());
}
private ClientRegistration keyCloakClientRegistration() {
return ClientRegistrations.fromIssuerLocation("http://localhost:8080/realms/oauth2")
.registrationId("keycloak")
.clientId("oauth2-client-app")
.clientSecret("ANwKmYvCcxiQbjsi4jh1JHqUWikngjec")
.redirectUri("http://localhost:8081/login/oauth2/code/keycloak")
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.scope("openid", "profile", "email")
.build();
}
}ClientRegistrationRepository ์ฌ์ฉ ์์
@RestController
@RequiredArgsConstructor
public class TestController {
//DI
private final ClientRegistrationRepository clientRegistrationRepository;
@GetMapping("/")
public ClientRegistration test() {
ClientRegistration clientRegistration = clientRegistrationRepository.findByRegistrationId("keycloak");
String clientId = clientRegistration.getClientId();
System.out.println("clientId = " + clientId);
String registrationId = clientRegistration.getRegistrationId();
System.out.println("registrationId = " + registrationId);
String redirectUri = clientRegistration.getRedirectUri();
System.out.println("redirectUri = " + redirectUri);
return clientRegistration;
}
}
์ด์ โฉ๏ธ - OAuth 2.0 Client - ClientRegistration
๋ค์ โช๏ธ - OAuth 2.0 Client - ์๋ ์ค์ ์ ์ํ ์ด๊ธฐํ ๊ณผ์
Last updated