Computer Science/Web

[Web] OAuth

dbssk 2023. 8. 10. 18:49

OAuth (Open Authorization)

OAuth는 인터넷 사용자들이 자원을 다른 웹 애플리케이션에서 안전하게 제3자로부터 접근하고 사용할 수 있도록 허용하는 프로토콜 및 프레임워크이다. 주로 웹과 모바일 애플리케이션에서 사용되며, 사용자가 자신의 데이터를 달느 서비스와 공유하거나 다른 서비스의 데이터를 사용할 수 있게 해준다.

 

OAuth 주체

1. Resource Owner

리소스 소유자. 우리의 서비스를 이용하면서, 구글, 페이스북 등의 플랫폼에서 리소스를 소유하고 있는 사용자

2. Client

Resource Server의 자원을 이용하고자 하는 서비스 = 우리가 개발하려는 서비스

3. Resource Server

구글, 페이스북, 트위터와 같이 리소스를 가지고 있는 서비스

4. Authorization Server

Resource Owner를 인증하고, Client에게 액세스 토큰을 발급해주는 서버

 

OAuth 동작 과정

  1. 로그인 요청 (1~2)
    • 사용자가 클라이언트 애플리케이션 내에서 로그인을 요청
    • 클라이언트는 사용자의 브라우저를 Authorization Server로 보내기 위해 Authorization URL을 생성
    • URL = response type, client id, redirect uri, scope 포함

  2. 로그인 페이지 제공, ID/PW 입력 (3~4)
    • 사용자는 클라이언트가 생성한 Authorization URL로 이동하여 로그인 페이지를 받음
    • 사용자는 ID와 PW를 입력하여 자신을 인증

  3. Authorization Code 발급, Redirect URI로 리디렉트 (5~6)
    • 인증이 성공하면 Authorization Server는 사용자를 클라이언트가 등록한 Redirect URI로 리디렉션시킴
    • 이때, 리디렉트 URL에는 Authorization Code가 쿼리 스트링으로 포함됨

  4. Authorizatino Code와 Access Token 교환 (7~8)
    • 클라이언트는 Authorization Code를 Authorizatino Server로 전송하고, 이를 교환하여 Access Token을 받음
    • Access Token : 리소스 서버에 접근할 때 사용될 임시 토큰

  5. 로그인 성공 (9)
    • 클라이언트는 Access Token을 획득하고, 사용자에게 로그인 성공을 알림

  6. Access Token으로 리소스 접근 (10~13)
    •  클라이언트는 발급받은 Access Token을 사용하여 리소스 서버에 요청
    • 리소스 서버는 Access Token의 유효성을 확인하고, 필요한 리소스를 제공

 

[참고] https://hudi.blog/oauth-2.0/