정리 노트

OAuth 본문

개념 정리

OAuth

꿈만 꾸는 학부생 2023. 2. 15. 00:34
728x90

공부하면서 정리한 글이라 오류가 있을 수 있습니다. 오류 지적 매우 환영합니다!


OAuth(Open Authorization)

  • 표준 규약
  • 인터넷 사용자들이 아이디 혹은 비밀번호를 제공하지 않고 다른 서비스 상에서 자신의 정보를 제공할 수 있도록 하는 권한을 부여하는 것

3개의 참여자

  • Client: 자신의 서비스, resource server에 접속해서 정보를 가져감
  • Resource Owner: 서비스를 사용하는 사용자, 자원의 소유자
  • Resource Server: 자신의 서비스가 연동하려는 서비스(ex. Google, Facebook, Twitter, …), 제어하려는 자원을 가지고 있는 서버

OAuth를 사용하기 위해서 client는 resource server에게 사전에 승인을 받아야 합니다. 승인을 받는 기관(카카오, 구글, 페이스북 등)마다 다르지만, 공통적으로 Client ID, Client Secret, Authorized redirect URL(resource server가 권한을 부여하는 과정에서 resource owner에게 Authorized code 값을 전달하는데 필요한 주소)을 받을 수 있습니다.

Resource Owner의 승인

사전 승인이 끝나면 Resource Server는 Client id, Client secret, redirect URL을 알게 되고, Client는 Client id, Client secret 값을 가지게 됩니다. 그러면 아래와 같은 절차를 거칩니다.

  1. User가 Application에 접속 → ‘카카오톡 로그인하기’ 버튼 같은 것을 제공
  2. 버튼 클릭 → Resource Server가 Resource Owner의 로그인 여부 확인
    1. 로그인이 안 돼있으면 로그인 요청
    2. Owner가 로그인 성공했으면 client id 값이 일치하는지 확인, client id의 redirect url이 요청의 redirect url과 같은지 확인(다르면 작업을 종료)
    3. 모두 일치하면 권한 허용 여부 확인
  3. 허용했다면 허용했다는 내용이 Resource Server에게 전달 → Resource Server는 user id, scope(권한 허용 범위) 등을 저장

Resource Server의 승인

OAuth는 resource owner, resource server, client 3자가 서로 신뢰해야 하기 때문에 resource server에서 아래와 같은 과정을 거칩니다.

  1. authorization code는 Resource Server가 Resource Owner에게 전송(ex. Location : https://client/callback?code=3)
  2. Resource Owner 모르게 call back 주소를 통해 Client에 접속 → Client는 authorization code를 가지게 된다.
  3. Client는 Resource Server에 직접 접속해서 authorization code와 client secret 포함된 정보들 전송
  4. Resource Server는 모두 일치하는지 확인 → 그 후로 authorizaiton code는 지운다.
  5. Resource Server는 Access Token 발급해서 Client에게 전송 → Client는 Access Token은 내부적으로 저장

Authorization code: The authorization code is a temporary code that the client will exchange for an access token.(출처: https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/)

한국어로 바꿔서 얘기하면 아래와 같습니다.

Authorization code는 client가 access token으로 바꿀 때 사용되는 임시적인 code입니다.

Refresh Token

Access Token은 수명이 있습니다. 그래서 access token 만료되면 재발급을 해야 합니다. Access token을 다시 발급받으려면 위에 적힌 과정들을 다시 거쳐야 하는데 너무 오래 걸립니다. 그래서 access token을 재발급받을 수 있는 방법들 중 하나로 refresh token이 생겼습니다.

Refresh token은 처음에 access token이 주어질 때 같이 받습니다.

보관하고 있던 refresh token을 authorization server에 주면 access token을 다시 발급받을 수 있습니다.

source: https://www.rfc-editor.org/rfc/rfc6749#section-1.5

참고

https://opentutorials.org/course/3405

 

WEB2 - OAuth 2.0 - 생활코딩

수업소개 사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 합니다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요합니다. 이를 위

opentutorials.org

https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/

 

Authorization Code Grant - OAuth 2.0 Simplified

The authorization code is a temporary code that the client will exchange for an access token. The code itself is obtained from the authorization server

www.oauth.com

https://www.rfc-editor.org/rfc/rfc6749#section-1.5

 

RFC 6749: The OAuth 2.0 Authorization Framework

 

www.rfc-editor.org

 

728x90

'개념 정리' 카테고리의 다른 글

Min-Hashing  (1) 2023.06.08
Amazon Cognito에 대하여  (0) 2023.02.22
Docker  (0) 2022.12.22
영상 처리에서의 edge 검출  (0) 2022.10.09
영상 처리의 세 가지 기본 연산  (2) 2022.09.21