할머니의 콤퓨타 도전기

OAuth 2.0 본문

Web Front-end

OAuth 2.0

ji.o.n.e 2021. 1. 16. 00:46

Oauth

  • Resource Owner

    • Client(서비스)를 이용하는 자, Resource Server에 가입이 되어있는 정보의 주인
  • Client

    • Resource Owner의 정보를 Resource Server로 부터 요청하는 Client
    • Resource Owner에게 서비스를 제공하는 자
  • Resource Server

    • Resource Owner의 정보를 보관하고 있는 자로 Resource Owner로 부터 인증을 받아 client에게 Resource Owner의 정보를 제공하는 정보 보관소
  1. 아이디와 비밀번호 이용 안함
  2. 먼저 Client가 Resource Owner (User)에게 서비스를 제공하기 위해 Resource Server에게 필요한 정보 요청
  3. Resource Server가 Resource Owner에게 인증 요청
  4. Resource Server가 인증 허가
  5. Resource Server가 필요로하는 정보에만 접근할 수 있는 Access Token을 Client에게 발급
  6. Client가 AccessToken을 가지고 Resource Server에 있는 Resource Owner의 정보를 얻어와 가공하여 Resource Owner에게 서비스 제공
  • 장점

    • 사용자의 아이디와 비밀번호 이용 안함
    • Access Token을 통해 Client는 필요로 하는 정보에만 접근 가능
  • 인증 과정

  1. User가 Client에 접속
  2. User가 사용하려는 Client의 기능이 Resource Server에 존재하는 데이터를 필요로 함
  3. Client에서 User에게 Resource Server에 로그인 하라고 링크를 띄어줌. 링크의 파라미터에는 client_id, redirect_url, scope가 포함 (Resource Server에서 User 자신이 정보의 주인이 맞음을 확인하기 위해 로그인 요청
  4. User가 위의 링크를 클릭하고 Resource Server에서 User가 로그인 되어있지 않다면 로그인하라는 화면 띄움
  5. User가 로그인하면, Resource Server에서는 url 파라미터에 담긴 client_id, redirect_url과 사전에 등록된 정보 비교 (User가 사용하는 Client가 사전에 Resource Server에 등록된 Client임을 확인함으로써, 가짜 App에서의 요청 방지)
  6. client_id와 redirect_uri가 일치하면 url 파라미터에 담긴 scope를 Client에게 제공하는 것을 허용하는지 확인하기 위해 User에게 화면을 띄움
  7. User가 허용하면 Autorization_code를 파라미터에 담아서 사전에 Client가 등록한 redirect_url로 이동하도록 리다이렉션 시킴
  8. User가 Client로 리다이렉트 되면서, Client가 Authorization_code를 알게됨
  9. Client는 client_id, client_secret, Authorization_code를 Resource Server에게 전송
  10. Resource Server는 이 정보가 모두 일치하는지 확인하고 Access Token을 Client에게 발급

'Web Front-end' 카테고리의 다른 글

Deploying to Github Pages  (0) 2021.04.29
AJAX (Asynchronous Javascript And XML)  (0) 2021.01.16
API (Application Programming Interface)  (0) 2021.01.16
Comments