programming study/CS-WEB

OAuth2.0

gu9gu 2022. 12. 30. 00:15

배경

개인 프로젝트에 OAuth 로그인 기능을 넣으려고 하는데, 먼저 OAuth의 개념을 확실히 하기 위해서 정리하였습니다.

 

 

본론

 

oauth란 다른 웹사이트에 자신의 정보에 대한 접근권한을 부여할 수 방법입니다.
 예를 들면 특정 사이트에서 로그인을 할 때 네이버의 접근권한을  받아 인증을 하게 되는데 이 때 사용하는 인증절차를 oauth라고 합니다.

동작방식은
우선 자원을 제공하는 사이트에 클라이언트 즉 우리 어플리케이션주소와  redirect url을 등록하고cleint_id, cleint_secret를 발급받습니다.
oauth 로그인을 할 때
먼저 cleint_id, scope, redirect_uri을 인자값으로 해서 자원을 제공하는 사이트의 리소스 서버로 요청을 합니다. 그러면 redirect url로 authorization code를 받아옵니다.
우리 서버에서는 authorization code, cleint_id, cleint_sceret을 이용해 리소스 서버로 요청해서 access token을 받아옵니다.
그러면 access token으로 resource server에 요청해서 인가된 정보를 받아올 수 있습니다.


 

 

 

예시)

      사용자(리소스오너)    개인앱서버(클라이언트)     카카오API서버(oAuth인증서버)    카카오자원서버(리소스서버)

 

1. 개인 사이트 로그인 화면에서 사용자가 카카오 로그인 버튼 클릭

2. 카카오 서버가 요청을 받아 카카오 로그인이 됐는지 확인하여 로그인이 됐다면 카카오 동의 화면 띄움

로그인이 안 됐다면 카카오 로그인 화면을 띄움. 로그인을 하면 동의 화면 띄움

3. 카카오 로그인이 정상처리 됐으면 개인앱서버로 로그인정상처리정보를 가지고 callback

4. 개인앱서버에서 인증처리 완료. 또는 카카오 서버의 자원서버에 접근할 수 있는 엑세스 토근을 요청함.

5. 개인앱서버가 카카오자원서버 액세스 토근을 받으면 사용자 대신 직접 카카오자원서버에 있는 사용자의 정보에 접근할 수 있게 된다.

 

 

tip)

스프링이 공식적으로 지원해주는 "oAuth - client 라이브러리"는 facebook, google

 

security - oAuth2 Client, oAuth2 Resource Server 라이브러리 사용

'programming study > CS-WEB' 카테고리의 다른 글

CORS와 쿠키(Same-Site, Secure, httpOnly), CSRF와 XSS  (0) 2023.02.27
OSI 7계층  (0) 2023.01.13
REST API  (0) 2022.12.06
HTTP 웹 기초  (0) 2022.11.16