-
Notifications
You must be signed in to change notification settings - Fork 0
oauth2 로그인
snanoh edited this page Jul 26, 2022
·
3 revisions
참고 블로그 : https://deeplify.dev/back-end/spring/oauth2-social-login#securityconfig
구글 예시
- 구글 소셜 로그인 요청
- 백엔드로 GET “/oauth2/authorization/{provider-id}?redirect_uri=http://localhost:3000/oauth/redirect”으로 OAuth 인가 요청(redirect_uri 변경 가능)
예시 index.html - Authorization Code 인증을 할 수 있도록 리다이렉트 (Redirect: GET “https://oauth.google.com/oauth2.0/authorize?…”)
- 리다이렉트 화면에서 구글 서비스에 로그인
- 로그인이 완료된 후, Athorization server로부터 백엔드로 Authorization 코드 응답
- 백엔드에서 인가 코드를 이용하여 Authorization Server에 엑세스 토큰 요청
- 엑세스 토큰 획득
- 엑세스 토큰을 이용하여 Resource Server에 유저 데이터 요청
- 획득한 유저 데이터를 DB에 저장 후, JWT 엑세스 토큰과 리프레시 토큰을 생성
- 리프레시 토큰은 수정 불가능한 쿠키에 저장하고, 엑세스 토큰은 프로트엔드 리다이렉트 URI 에 쿼리스트링에 토큰을 담아 리다이렉트 (Redirect: GET http://localhost:3000/oauth/redirect?token={jwt-token})
- 프론트엔드에서 토큰을 저장 후, API 요청 시 헤더에 Authroization: Bearer {token}을 추가하여 요청
- 백엔드에서는 토큰을 확인하여 권한 확인
- 토큰이 만료된 경우, 쿠키에 저장된 리프레시 토큰을 이용하여 엑세스 토큰과 리프레시 토큰을 재발급