https://github.com/ 로그인 -> Setting -> Dveloper settings -> OAuth Apps -> New OAuth App
로 이동하여 새로운 OAuth를 생성해줍니다.
Setting | Dveloper settings | OAuth Apps | New OAuth App |
---|---|---|---|
현재 사용하고 있는 URL를 작성해주시면 됩니다. 현재는 localhost에서 테스트 중이라서 http://localhost:8080/ 을 사용하지만 추후 배포까지 하게 된다면 배포를 진행한 URL로 바꾸어주시면됩니다.
기본적으로 Spring에서는 http://localhost:8080/login/oauth2/code/github
을 사용하니 해당 URL로 입력해주시면됩니다.
OAuth를 사용할려면 security가 있어야하므로 만약 종속이 안되어있다면
build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-security'
추가를 해주시고 빌드를 해주시면됩니다.
이제 필요한 값을 생성하야합니다. 생성한 OAuth에 들어가면 Client ID
와 Client secrets
가 필요한데 Client secrets
는 Generate a new client secret를 눌러서 생성해주시면 됩니다.
그리고 발급받은 아이디와 시크릿을 yml
또는properties
에 넣어주시면 됩니다.
spring:
security:
oauth2:
client:
registration:
github:
client-id: 클라이언트 아이디
client-secret: 클라이언트 시크릿
spring.security.oauth2.client.registration.github.clientId=클라이언트 아이디
spring.security.oauth2.client.registration.github.clientSecret=클라이언트 시크릿
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/{서비스}
와 같은 규칙을 가지는데 github를 예시로 들면 /login/github
에 접속하면 바로 로그인 페이지로 넘어갈 수 있습니다. 해당 방법을 이용하여 리다리렉트를 시키면 원하는 방법으로 로그인 페이지로 넘어갈 수 있게 만들 수 있습니다.
만약 해당 url규칙이 아니라면 /login페이지에서 F12(개발자 모드)로 들어가서 어디로 url이 접속되는지 확인하는 방법으로 url를 찾으시면 됩니다.