
이 벨로그는 SpringBoot Oauth2로 구글 로그인을 구현할 때 개인적으로 헷갈렸던 부분을 기록하려고 만든 velog입니다. Google Cloud Api에서 Oauth2.0의 사용자 인증 정보 중 웹 애플리케이션의 클라이언트 ID까지 설정 다 끝내놓았다고 가정하고 시작하겠습니다.
시작하기에 앞서 Oauth의 작동 원리에 대해 잠깐 짚고 넘어가자면

간단히 생각하면
Client = 우리의 서비스
Authroization Server = Oauth 로그인 확인하는 Google, FaceBooke, Kakao의 서버
Resource Server = 소셜 서비스에 있는 유저의 프로필, 정보
라고 생각하고 이해하시면 될거 같습니다.

만약 없다면 사용자 인증 정보 만들기에서 OAuth2.0 클라이언트 ID를 만들어야 합니다.

저는 승인된 리디렉션 URI는 구글 로그인 버튼을 누르면 로그인하는 폼이 이 주소인줄 알았습니다. 하지만 그게 아니라, 유저가 로그인을 성공적으로 마치면 구글 서버에서 저희의 서버로 유저가 인증 되었다는 코드를 돌려주고, 저희는 이 코드를 가지고 유저의 정보에 접근,획득할 수 있는 access token을 얻는겁니다.
따라서 승인된 리디렉션 URI는? 코드를 얻을 수 있는 주소!!
만약 SpringBoot에서 제공하는 Oauth Client dependency를 사용하고 있다면 http://localhost:8080 까지는 원하는 도메인으로 수정할 수 있는데, /login/oauth2/code/google은 고정입니다! 다만 facebooke로그인이라면 google 대신 /login/oauth2/code/facebooke 등 뒤에 부분만 다릅니다.
또, /login/oauth2~에 대한 주소 처리는 oauth2 client dependency에서 해주기 때문에 따로 Controller를 만들어 줄 필요가 없습니다!
✅ application.yml 혹은 application.properties에 oauth2 설정 추가해주기
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
username:
password:
jpa:
hibernate:
ddl-auto: create #create update none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
security:
oauth2:
client:
registration:
google:
client-id:
client-secret:
scope:
- email
- profile
spring.security.oauth2.client.registration.google.client-id=클라이언트 ID
spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀
spring.security.oauth2.client.registration.google.scope=profile,email
client-id, client-secret에 구글 클라우드 api의 키들을 넣어주셔야 합니다!! 그리고 application.yml / application.properties는 보안키들 많이 들어가니 꼭 gitignore에 추가하고 github에 올라가는 일 없도록 하셔야 합니다!!
.yml로 사용하실경우 들여쓰기 중요해요!! datasource, jpa, security 같은 줄에 맞춰주세요
<a href="/oauth2/authorization/google">구글 로그인</a>
지금은 프런트 없이 백엔드만 구동시켜서 줄 주소로만 설정해뒀는데 Oauth2 Client를 사용하면 리디렉션 URI처럼 로그인 폼 나오는것도 /oauth/authorization/google로 고정입니다!
.and()
.oauth2Login()
.loginPage("/loginForm");
oauth2로 로그인 하는데, loginPage에 oauth 로그인 있는 페이지를 넣어줍니다.


하면 구글 로그인 폼 잘 나오는거 확인할 수 있습니다!
지금 로그인 폼까지는 잘 들어왔지만 로그인 하면 403에러가 나오는데 이유가 로그인 후처리를 안해줬습니다.
다음 velog에서는 로그인 후처리하는 security설정들에 대해 알아보겠습니다