본문 바로가기

기타

OAuth (Open Standard for Authorization) 이해하고 사용하기

용어 설명

SNS에 등록되어 있는 유저의 정보 Resource를 기준으로 관계를 정의

1. Client : Resource Server 를 사용하는 주체, 내가 구현하게 될 어플리케이션

2. Resource Owner : Resource Server에 인증되어 있는 사용자. 내가 구현한 어플리케이션을 사용 할 사용자

3. Resource Server : Resource Owner의 데이터를 가지고 있는 서버 (Ex: Google, Facebook, kakao, naver)

 

 

등록

Resource Server에 Client를 등록해야함

등록 과정을 거치게 되면, Client와 Resource Server는 아래 3가지를 공유하게 됨

1. Client ID : 내가 구현 할 어플리케이션을 식별 할 수 있는 ID

2. Client Secret : 내가 구현 할 어플리케이션을 식별 할 수 있는 비밀번호 (보안 중요!)

3. Authorized Redirect URL : Resource Server가 권한을 부여하는 과정에서 Authorized Code를 전달해 줄 경로

 

인증 과정

1. 사용자 (Resource Owner)는 서비스 (Client)를 이용하기 위해 로그인 페이지에 접근

2. 그럼 Client는 사용자에게 SNS 별 로그인 페이지 (Redirect_URI)를 제공 (Ex: 구글, 페이스북, 카카오 로그인 페이지)

3. 만일 사용자가 Login을 하면 특정한 url이 페이스북 서버쪽으로 보내지게 됨
Ex) 아래 uri 를 나누어 설명해보면

https://resource.server/? # 리소스 서버(네이버, 카카오 사이트 url)
client_id=1 # 어떤 client인지를 id를 통해 Resouce Owner에게 알려주는 부분
&scope=B,C # Resource Owner가 사용하려는 기능, 달리 말해 client가 자신 서비스에서 사용하려는 Resource Server 기능을 표현한 부분
&redirect_uri=https://client/callback # 개발자 홈페이지에 서비스 개발자가 입력한 응답 콜백.

향후 redirect_uri 경로를 통해 Resourced Server는 client에게 임시비밀번호인 Authorization code를 제공함

4. Client로부터 보낸 서비스 정보와 리소스 로그인 서버에 등록된 서비스 정보를 비교 (먼저 Client 식별)

   4-1. 확인이 완료되면, Resource Server로 부터 SNS 계정 전용 로그인 페이지로 이동하여 사용자에게 보여줌

5. ID/PW를 적어서 로그인을 하게되면, client가 사용하려는 기능(scope)에 대해 Resource Owner의 동의를 요청

   5-1. Resource Owner가 Allow 버튼을 누르면 Resource Owner가 권한을 위임했다는 승인이 Resource Server 에 전달

6. 하지만, 이미 Owner가 Client에게 권한 승인을 했더라도 아직 Server가 허락하지 않았다. 따라서, Resource Server 도 Client에게 권한 승인을 하기위해 Authorization code Redirect URL을 통해 사용자에게 응답하고

7. 다시 사용자는 그대로 Client에게 다시 보냄

 

 

 

카카오 인가 코드 받기

인가코드 요청 방법

카카오 개발자 홈페이지에서 내가 등록한 애플리케이션의 앱키-Rest API 키를 복사

html 카카오 로그인 하기 버튼과 연결된 uri 중 "client_id=" 뒷부분에 REST API 키를 추가

https://kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code

// 예시
https://kauth.kakao.com/oauth/authorize?client_id=본인의 REST API키&redirect_uri=http://localhost:8080/api/user/kakao/callback&response_type=code

 

 

 

 

 

 

 

 

 

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-OAuth-20-%EA%B0%9C%EB%85%90-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC

 

🌐 OAuth 2.0 개념 - 그림으로 이해하기 쉽게 설명

OAuth란? 웹 서핑을 하다 보면 Google과 Facebook 등의 외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인할 수 있는 웹 어플리케이션을 쉽게 찾아볼 수 있다. 클릭 한 번으로 간편하게 로그인할

inpa.tistory.com