[RFC] 6749 OAuth 2.0

ss9909·2022년 10월 3일
0

RFC

목록 보기
1/1

들어가기에 앞서

작성자는 OAuth를 읽는 방법부터 몰랐다. (오오스라고 읽으면 된다)
다른 분들은 좀 더 쉽게 이해하길 바라며 이 포스팅을 작성한다.

포스팅을 작성중 잠시 youtube를 보다가 생활코딩님께서 올려주신 강의를 봤다.
영상 속 내용만 이해하면 충분히 OAuth를 이해했다고 생각할 정도로 잘 정리되어 있었다.
삽질하기 전에 먼저 봤다면 굉장히 좋았을 것 같다.😂🤣
다른 이를 위해 해당 강의 링크를 남긴다. [WEB2-OAuth 생활코딩]

OAuth 2.0

📄RFC6749에서 OAuth 2.0 을 정의
현재 글이 다루지 않는 부분은 위의 공식문서에서 확인할 수 있다.

인증(Authentication)과 인가(Authorization)의 차이

OAuth를 설명하기 전에 인증과 인가를 확실히 구별하고 글을 읽으면 좋을 것 같다.

Authenticaiton : 인증
누군가가 실제로 자신이 주장하는 누군가임을 확인
로그인이 인증 과정에 해당

Authorization : 인가
무엇을 할 수 있는지 결정
인증과는 별개의 과정

OAuth

OAuth는 Open Standard for Authorization의 줄임말이다.

OAuth가 왜 나왔는지 알기위해 특정 서비스의 로그인 화면을 살펴보자.
내가 카카오에 가입한 상태이고, 무신사에 가입하려는데 아래와 같은 화면을 마주쳤다고 생각해보자

현재 상황을 정리하면 이렇다
나는 카카오(Resource Server)에 이미 가입되어 있다
카카오에서는 나(Resource owner)의 정보를 저장하고 있다.
무신사(Client)에서 카카오(Resource Server)에게 요청해 나(Resource owner)에게 제공하는 기능중 일부를 이용하고자 한다.

OAuth가 없었을 때는 카카오가 제공하는 기능을 무신사에서 사용하기 위해서는 나의 카카오 id와 비밀번호를 무신사 측에게 넘겨줘야 했다. 그러나 실제로 넘겨줄 경우 모두가 불안이 있는 상태다.

  • 나는 내 카카오 id와 비밀번호를 무신사와 공유하고 싶지 않다.
  • 카카오는 무신사가 민감한 정보를 잘 관리할 수 있을지 신뢰할 수 없다.
  • 무신사는 신규 회원으로부터 카카오 id 와 비밀번호를 넘겨받았으므로 문제가 생겼을 경우 책임소재가 있어 부담스럽다.

따라서 해당 문제를 해결하기 위한 방법으로 제시한 솔루션이 OAuth였다. 트위터에 다니던 개발자가 구현한 이 솔루션은 구조적으로 몇가지 문제를 품은 채로 표준이 됐다. 후에 이를 개선한 OAuth1.0a이 나왔지만, OAuth2.0이 나오면서 OAuth2.0이 표준으로 굳어졌다. 이후 OAuth라 하면 모두 OAuth2.0 을 말한다.

OAuth 기본 단어설명

명칭설명
Resource ServerOAuth 2.0 서비스를 제공하고 자원을 관리하는 서버
Resource OwnerResource Server의 계정을 소유하고 있는 사용자
ClientResource Server의 API를 사용하여 데이터를 가져오려고 하는 사이트 및 앱
Authorization ServerClient가 Resource Server의 서비스를 사용할 수 있게 토큰을 발생해주는 서버
Acess TokenResource Server에 자원을 요청할 수 있는 Token
Refresh TokenAuthorization Server에 Access Token을 요청할 수 있는 Token, 발급 여부와 방법 및 갱신 주기 등은 OAuth를 제공하는 Resource Server마다 상이
Client IDClient를 구별할 수 있는 식별자
Client SecretClient ID에 대한 비밀키
Authorized redirect URLAuthorization Code를 전달받을 리다이렉트 주소
profile
이름 짓는 게 어려운 사람

0개의 댓글