일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- Spring
- error
- ruby2d
- maven
- gnuplot
- C
- plugin
- Godot
- IntelliJ
- rubymine
- RaspberryPi
- kotlin
- Shell
- GitHub
- ruby
- gradle
- 개발노트
- OAuth
- 루비
- CPP
- Baekjoon
- Android
- JS
- react
- OTLanguage
- boj
- Vane
- Java
- jetbrains
- Today
- Total
PersesTitan(페르) 기술블로그
[Spring] Github OAuth2로그인 구현 본문
OAuth2
OAuth 생성하기
https://github.com/ 로그인 -> Setting -> Dveloper settings -> OAuth Apps -> New OAuth App
로 이동하여 새로운 OAuth를 생성해줍니다.
Setting | Dveloper settings | OAuth Apps | New 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 ID와 Client 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를 찾으시면 됩니다.
'Framework > Spring' 카테고리의 다른 글
[Spring] 서버가 켜지지 않고 바로 종료될때 (Maven 프로젝트 빌드) (0) | 2023.08.18 |
---|---|
[IntelliJ] Maven reload하는 법 (Build), 수정 내용 적용하는 방법들 (0) | 2023.08.18 |
[Spring] Google OAuth2로그인 구현 (0) | 2023.01.20 |
[Spring] 실행시 데이터 생성하기 (@PostConstruct) (0) | 2023.01.10 |
[Spring Security] 3.0.0버전에서스프링 시큐리티 설정하기 (0) | 2022.12.07 |