Spring Boot/Security
ClientRegistration 커스텀 in Oauth2
최-코드
2024. 10. 10. 12:11
상황 : Oauth2AuthorizedClientService를 구현하려했는데 ClientRegistration을 인자로 보낼 수 없어서 이 클래스를 만들어주어야 한다.
https://rosoa0475.tistory.com/294로 가면 Oauth2AuthorizedClientService를 커스텀한 것을 볼 수 있다.
ClientRegistration
@Component
public class CustomClientRegistration {
//기존의 application 설정파일에 있던 정보 옮김
public ClientRegistration kakaoClientRegistration() {
return ClientRegistration.withRegistrationId("kakao")
.clientId("11aaf58c5c320697ce18b46e42a2ca66")
.clientSecret("NNqpfNJ6x30IT5VT7TjIQbEsnDCSfvyh")
.redirectUri("http://localhost:8080/login/oauth2/code/kakao")
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
.authorizationUri("https://kauth.kakao.com/oauth/authorize")
.tokenUri("https://kauth.kakao.com/oauth/token")
.userInfoUri("https://kapi.kakao.com/v2/user/me")
.userNameAttributeName("id")
.build();
}
}
ClientRegistrationRepository
@Configuration
@RequiredArgsConstructor
public class CustomClientRegistrationRepo {
private final CustomClientRegistration customClientRegistration;
//registration이 많아봐야 5개 이하이므로 메모리에 저장
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(
customClientRegistration.kakaoClientRegistration());
}
}
SecurityConfig
private final ClientRegistrationRepository clientRegistrationRepository;
...
http
.oauth2Login(oauth2 -> oauth2 //custom한 clientRegistrationRepo 등록
.clientRegistrationRepository(clientRegistrationRepository));