Oauth2.0 개념

이건주·2022년 8월 6일
0
post-thumbnail

Oauth2.0 개요

  • OAuth 2.0(Open Authorization 2.0, OAuth2)는 인증을 위한 개방향 표준 프로토콜로서, Third-Party에게 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식이다.

Oauth2.0의 네 가지 인증 방식

권한 부여 승인 코드 방식 (Authorization Code Grant)

  • 권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식이다. 간편 로그인 기능에서 사용되는 방식으로 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식이다. 보통 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용된다. Refresh Token의 사용이 가능한 방식이다.
  • 권한 부여 승인 요청 시 response_type을 code로 지정하여 요청합니다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저를 띄워 출력합니다. 이 페이지를 통해 사용자가 로그인을 하면 권한 서버는 권한 부여 승인 코드 요청 시 전달받은 redirect_url로 Authorization Code를 전달합니다. Authorization Code는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환됩니다.

암묵적 승인 방식 (Implicit Grant)

  • 자격증명을 안전하게 저장하기 힘든 클라이언트(ex. 자바스크립트 등의 언어를 사용하 브라우저)에게 최적화된 방식이다.
  • 암묵적 승인 방식에서는 Authorization Code 없이 바로 Access Token이 발급된다. Access Token이 바로 전달되므로 만료기간을 짧게 설정하여 누출의 위험을 줄일 수 있다.
  • Refresh Token 사용이 불가능한 방식이며, 이 방식에서 권한 서버는 client_secret을 사용해 클라이언트를 인증하지 않는다.
  • Access Token을 획득하기 위한 절차가 간소화되기에 응답성과 효율성은 높아지지만 Access Token이 URL로 전달된다는 단점이 있다.
  • 권한 부여 승인 요청 시, response_type을 token으로 설정하여 요청한다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저로 띄워 출력하게 되며 로그인이 완료되면 권한 서버는 Authorization Code가 아닌 Access Token을 redirect_url로 바로 전달한다.

자원 소유자 자격증명 승인 방식 (Resource Owner Password Credentials Grant)

  • 간단하게 username, password로 Access Token을 받는 방식이다.
  • 클라이언트가 타사의 외부 프로그램일 경우에는 이 방식을 적용하면 안된다. 자신의 서비스에서 제공하는 어플리케이션일 경우에만 사용되는 인증 방식이다.
  • Refresh Token 사용이 가능하다.
  • 중요한 점은 이 방식은 권한 서버, 리소스 서버, 클라이언트가 모두 같은 시스템에 속해 있을 때 사용되어야 하는 방식이다.

클라이언트 자격증명 승인 방식 (Client Credentials Grant)

  • 클라이언트의 자격증명만으로 Access Token을 획득하는 방식이다.
  • 가장 간단한 방식으로 클라이언트 자신이 관리하는 리소스 혹은 권한 서버에 해당 클라이언트를 위한 제한된 리소스 접근 권한이 설정되어 있는 경우 사용된다.
  • 이 방식은 자격증명을 안전하게 보관할 수 있는 클라이언트에서만 사용되어야 하며, Refresh Token은 사용할 수 없다.

https://blog.naver.com/mds_datasecurity/222182943542 - Oauth2.0 설명

profile
공부일기

0개의 댓글