Web

[Authorization] OAuth 2.0

moguogu 2021. 7. 28. 20:00

OAuth 2.0

용어

  • Resource Owner(user): 사용자-> google이나 facebook에 계정이 있고 내가 만든 사이트를 사용하고자 함
  • Resource Server: google이나 facebook 계정 data를 가지고 있음
  • Authorization Sever: google이나 facebook과 같은 곳 인증과 관련 된 서버
  • Mine(client): 내가 만든 서비스

등록 과정

image

  • client Id: 우리가 만드는 app의 식별자
  • client Secret: 절대로 노출되면 안되는 id에 대한 비밀번호
  • Authorized redirect URIs: 해당 주소로 authorized code가 전달됨

인증 과정 (Resource Owner의 승인)

  1. Resource Owner(user)가 Client에게 기능을 접근하려 할 때 google, facebook의 인증을 필요로 할 수 있다.

  2. Resource Sever가 가지고 있는 기능 A,B,C,D중에 필요한 기능만 인증을 받는다

  3. client가 resource owner에게
    image
    위의 사진처럼 전달한다.

  4. Resource Owner가 Resource Sever에게 보낸다.

    • 로그인이 되어있지 않은 경우: 사용자에게 로그인을 하라고 한다.
    • 로그인이 되어있는 경우 : client Id와 url이 같은지 확인하고 scope을 확인해서 이 권한을 허용할 것인지 Resource Onwer에게 보여준다.
  5. 동의가 이루어진 경우 client에게 전달된다.


승인 과정(Resource Sever의 승인)

  1. authorization code를 만들어서 전달해준다.

image

  1. client는 code와 Resource Sever의 code를 비교하고 Resource Sever에 전달한다. srever는 Id,secret,url이 모두 일치하면 다음 단계로 진행한다.

  2. Access Token을 발급한다.


Access Token

  1. Resource Sever는 재인증을 하지 않기 위해 Authorization code를 지운다.

  2. Resource Sever는 AccessToken을 발급하고 Client가 그것을 내부적으로 저장한다.

  • Url에 access Token=~~과 같은 형식으로 전달된다.

Authorization Bearer Token이 더 선호되는 안전한 방식이다!!

Refresh Token

access token이 만료되면 Authorization server에 다시 refresh token을 전송해서 access token을 다시 받는다.
이 때 refresh token은 재발급 될 수도있고 그렇지 않을 수도 있다.

'Web' 카테고리의 다른 글

[Socket] Socket 통신  (0) 2021.07.28
[Docker] Dockerfile 만들기  (0) 2021.07.28
[HTTP] METHOD  (0) 2021.07.28