개발일지

OAuth client 인증 구현 하기 (Github) 본문

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

'Java > 웹 프로그래밍' 카테고리의 다른 글

(인증과 관련된) 쿠키 / 세션  (0) 2023.05.16
Comments