OAuth2

박윤택·2022년 10월 21일
0

Spring

목록 보기
14/18

OAuth2란?

정의

인증을 위한 표준 프로토콜의 한 종류로써 보안된 리소스에 엑세스하기 위해 클라이언트에게 권한을 제공한다. 즉 "특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식"이다.


용어

  • Resource Owner : 엑세스 중인 리소스 유저
  • Client : Resource Owner를 대신하여 보호된 리소스에 엑세스하는 응용프로그램
  • Resource Server : client의 요청을 수락하고 응답할 수 있는 서버
  • Authorization Server : Resource Server가 엑세스 토큰을 발급받는 서버
  • Authorization Grant : 클라이언트가 엑세스 토큰을 얻을 때 사용하는 자격 증명
  • Authorization Code : access token을 발급받기 위해 필요한 code
  • Access Token : 보호된 리소스에 엑세스하는 데 사용되는 credentials
  • Scope : 주어진 엑세스 토큰을 사용하여 엑세스할 수 있는 리소스의 범위

동작 방식

  • Authorization Code Grant : 권한 부여 승인 코드 방식

    자체 생성한 Authorization Code를 전달하는 방식으로, 가장 많이 쓰이고 기본이 되는 방식이다. 여기서 Client란 서버를 의미한다.

  • Implicit Grant : 암묵적 승인 방식

별도의 Authorization Code 없이 바로 Access Token을 발급하는 방식이다. 브라우저에게 최적화된 방식 즉, 프론트 단에서 서버를 거치지 않고 바로 자격증명을 얻는 방법이다.

  • Resource Owner Password Credential Grant : 자원 소유자 자격 증명 승인 방식

    간단하게 로그인 시 필요한 정보(username, password)로 Access Token을 발급받는 방식으로 자신의 서비스에서 제공되는 애플리케이션의 겨우에만 사용되는 인증방식이다. 예로는 네이버 로그인을 통해 네이버 지도 애플리케이션을 이용하는 경우이다. Authorization Server, Resource Server, Client가 모두 같은 시스템에 속해 있을 때만 사용 가능하다.

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

    Client 자신이 관리하는 Resource 혹은 Authorization Server에 해당 Client를 위한 제한된 Resource 접근 권한이 설정되어 있는 경우 사용 가능한 방식이다.


0개의 댓글