[Spring] Github OAuth2로그인 구현

PersesTitan·2023년 1월 12일
0

Spring

목록 보기
43/48

OAuth2

OAuth 생성하기

https://github.com/ 로그인 -> Setting -> Dveloper settings -> OAuth Apps -> New OAuth App
로 이동하여 새로운 OAuth를 생성해줍니다.

SettingDveloper settingsOAuth AppsNew OAuth App

Homepage

현재 사용하고 있는 URL를 작성해주시면 됩니다. 현재는 localhost에서 테스트 중이라서 http://localhost:8080/ 을 사용하지만 추후 배포까지 하게 된다면 배포를 진행한 URL로 바꾸어주시면됩니다.

Authorization callback URL

기본적으로 Spring에서는 http://localhost:8080/login/oauth2/code/github을 사용하니 해당 URL로 입력해주시면됩니다.

Spring

OAuth를 사용할려면 security가 있어야하므로 만약 종속이 안되어있다면
build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-security'추가를 해주시고 빌드를 해주시면됩니다.

필요한 토큰 생성

이제 필요한 값을 생성하야합니다. 생성한 OAuth에 들어가면 Client IDClient secrets가 필요한데 Client secrets는 Generate a new client secret를 눌러서 생성해주시면 됩니다.

그리고 발급받은 아이디와 시크릿을 yml또는properties에 넣어주시면 됩니다.

application.yml

spring:
  security:
    oauth2:
      client:
        registration:
          github:
            client-id: 클라이언트 아이디
            client-secret: 클라이언트 시크릿

application.properties

spring.security.oauth2.client.registration.github.clientId=클라이언트 아이디
spring.security.oauth2.client.registration.github.clientSecret=클라이언트 시크릿

코드

Configuration

Configuration를 따로 설정하지 않으면 기본 로그인 페이지로 리다리렉트가 되므로 config코드에 oauth url를 추가해주세요.

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    protected SecurityFilterChain config(HttpSecurity http) throws Exception {
        http.oauth2Login()
                .authorizationEndpoint()
                .baseUri("/login");
        return http.build();
    }
}

테스트

코드 작성 이후 실행하고 http://localhost:8080/login에 접속하면 현재 등록된 OAuth서비스들을 볼 수 있습니다.

해당 URL에 들어가되면 로그인 서비스 페이지로 넘어가는 것을 볼 수 있습니다.

(참고로 해당 사진은 다른 프로젝트 예제라서 위에서 생성한 Test가 아닌 Shabi-Problem-Test로 표시되어 나옵니다.)

추가 (/login페이지가 아닌 다른 방법으로 접속하고 싶을때)

만약에 다른 방식으로 해당 로그인 페이지로 넘어오고 싶다면
/login/{서비스}와 같은 규칙을 가지는데 github를 예시로 들면 /login/github에 접속하면 바로 로그인 페이지로 넘어갈 수 있습니다. 해당 방법을 이용하여 리다리렉트를 시키면 원하는 방법으로 로그인 페이지로 넘어갈 수 있게 만들 수 있습니다.

만약 해당 url규칙이 아니라면 /login페이지에서 F12(개발자 모드)로 들어가서 어디로 url이 접속되는지 확인하는 방법으로 url를 찾으시면 됩니다.

profile
안녕하세요 페르세스 티탄입니다! 부족한 부분이 많이 있겠지만 잘부탁드립니다.

0개의 댓글