Java/웹 프로그래밍
OAuth client 인증 구현 하기 (Github)
O'mil
2023. 5. 20. 12:35
728x90
자바에서는 사전에 정의된 OAuth2 클라이언트 등록 작성기를 제공한다.
: Google, Github, Facebook, OKRA 등
1. 라이브러리 추가
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-client</artifactId>
</dependency>
pom.xml에 dependency 추가하기
2. github OAuth App 생성
- github에 로그인
- settings > (맨 밑에) Developer settings > OAuth Apps > New OAuth App
- Register a new OAuth application
- Homepage URL: http://localhost:8080
- Authorization callback
URL: http://localhost:8080/login/oauth2/code/github
<생성 후 ID와 Secret 넘버는 꼭 기억해 두셔야 합니다!! 잃어버리면 다시 발급 받으셔야 해요>
3. github에서 생성한 어플리케이션 정보 등록
private ClientRegistration github() {
return CommonOAuth2Provider.GITHUB.getBuilder("github")
.userNameAttributeName("name")
.clientId("----------")
.clientSecret("----------")
.build();
}
"----------" 부분에 Id와 Secret 넘버를 넣으면 됩니다.
4. ClientRegistrationRepository 구현체 생성
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return new InMemoryClientRegistrationRepository(github());
}
위에서 등록한 github 정보를 가지고 구현체 생성
5. OAuth2AuthorizedClientService 구현체 생성
@Bean
public OAuth2AuthorizedClientService authorizedClientService() {
return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository());
}
6. ClientRegistrationRepository와 authorizedClientService 설정
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return ...
.oauth2Login()
.clientRegistrationRepository(clientRegistrationRepository())
.authorizedClientService(authorizedClientService())
.and()
...
}
728x90