OAuth2 를 알아보자

cornpip
|2023. 7. 25. 11:04

프로토콜이란? 시스템 사이에서 데이터를 주고 받는 양식과 규칙의 체계이고 OAuth(Open Authorization)는 접근 위임을 위한 프로토콜의 일종이다.

내 서버 입장에서는 Third-Party Application을 통해 내 서버에 대해 접근을 위임하는 것이고

Third-Party Application 입장에서는 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 것이다.

OAuth2를 구성하는 4가지 역할

  • Resource Onwer : 사용자
  • Client : 나의 Application (나의 Application에서 서버와 클라이언트 둘 다 의미한다.)
  • Authorization Server : 인증/인가를 수행하는 서버로 사용자는 Authorization Server에 ID, PW를 전송해 Client로 인가 코드를 발급 받을 수 있고 Client는 인가 코드를  Authorization Server에 요청해 Access Token을 발급받을 수 있다.
  • Resource Server : 사용자의 보호된 자원을 호스팅하는 서버로 Client는 Token을 이 서버로 전송하고 사용자 자원을 받을 수 있다.

권한 부여 방식에 따른 프로토콜 4가지

1. Authorization Code Grant

기본이 되는 방식으로 ?response_type=code로 요청하면 Authorization Server에서 제공하는 로그인 페이지를 사용자에게 띄워준다. 사용자가 로그인을 성공하면 Authorization Server는 Client로 인가 코드를 반환한다. Client에서 인가 코드로 Authorization Server에 요청해 토큰을 얻고 Third-Party Application 사용자의 Resource를 획득한다.

 

2. Implict Grant

1의 방식에서 ?response_type=token으로 요청하고 인가 코드를 응답받지 않고 바로 토큰을 응답받는다. Access Token이 URL로 전달되므로 위험하다.

 

3. Resource Owner Password Credentials Grant

 

1의 흐름에서 Authorization Server가 로그인 팝업을 주는 과정이 생략됐다. ?grant_type=password로 username과 password와 함께 바로 토큰을 요청한다.

 

4. Client Credentials Grant

다른 정보없이 ?grant_type=client_credentials 로 요청한다. 권한이나 네트워크에 대한 사전 설정이 있는 상태에서 특정 Client에 대해 Authorization Server의 접근 권한을 열어 놓은 것으로 생각할 수 있겠다.

 

이미지 출처, 참고 블로그

https://blog.naver.com/mds_datasecurity/222182943542

 

OAuth 2.0 동작 방식의 이해

OAuth 2.0(Open Authorization 2.0, OAuth2)은 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토...

blog.naver.com

 

'Web' 카테고리의 다른 글

HTTP 메서드 GET/POST 차이  (0) 2023.09.06
쿠키(cookie), 서버 <-> 클라이언트 set-cookie 에러 사항들  (0) 2023.07.21
CORS  (0) 2023.07.20