Web | OAuth2.0

yeonk·2022년 10월 24일
0

web

목록 보기
1/1
post-thumbnail

OAuth2.0 이란?


OAuth2.0는 사용자가 자신의 비밀번호를 제공하지 않고 신뢰할만한 써드 파티 애플리케이션(페이스북, 구글, 네이버 등) 상 보안된 자신들의 리소스에 대해 다른 웹사이트에 접근 권한을 부여할 수 있는 개방형 표준 프로토콜 중 한 종류이다.

OAuth2는 보안된 리소스에 액세스 하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜 중 한 방법이다. 최근 많이 이용하는 소셜 로그인이 OAuth2.0 을 사용한 것이다.

OAuth2를 통한 인증은 로그인 인증 정보를 백엔드 애플리케이션에서 직접적으로 관리하지 않는다.

예를 들면, 로그인 자체는 네이버 인증을 이용하고, 로그인에 성공하면 액세스 토큰을 전달 받아서 네이버 캘린더 API를 사용하기 위해 해당 액세스 토큰을 이용하는 것이다.

이렇게 되면 직접적으로 네이버의 크리덴셜이 제공되지 않기 때문에 Client에서 사용하는 크리덴셜 저장소에 저장할 필요가 없어 사용자의 크리덴셜을 이중으로 관리하지 않아도 된다.






OAuth2 인증 구성 요소 & 사용 용어


  • Resource Owner(리소스 소유자): 액세스 중인 리소스의 유저. 서비스를 이용하는 사용자를 말한다.

  • Client: Resource owner를 대신하여 보호된 리소스에 액세스하는 응용 프로그램.

  • Resource server: client의 요청을 수락하고 리소스를 제공하는 서버

  • Authorization server: Resource server가 액세스 토큰을 발급하는 서버(접근 권한을 부여하는 서버)

  • Authorization grant: 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명. 여러 타입이 있음

  • Authorization code: access token을 발급하기 전에 필요한 code

  • Access token: 보호된 리소스에 액세스 하는데 사용되는 credentials

  • Scope: 주어진 액세스 토큰을 사용하여 액세스 할 수 있는 범위






Authorization Grant Type


Authorization Code Grant Type

권한 부여 승인 코드 방식

  • 자체적으로 생성한 Authorization code를 전달하여 권한을 부여 승인을 진행하는 방식

  • Refresh token 사용 가능

  • 응답 타입(response_type) → code로 지정하여 요청






Implicit Grant Type

암묵적 승인 방식

  • Authorization Code 없이 바로 액세스 토큰 발급

  • 자격증명을 안전하게 저장하기 어려운 경우에 최적화된 방법

  • Refresh token 사용 불가능

  • 응답 타입(response_type) → token로 지정하여 요청






Resource Owner Password Credential Grant Type

자격 소유자 자격 증명 승인 방식

  • 로그인 시 필요한 정보로 액세스 토큰 발급

  • Authorization Server, Resource Server, Client가 모두 같은 시스템에 속할 때 사용

    • 자신의 서비스에 제공하는 애플리케이션의 경우에만 사용

    • 예: 네이버 계정으로 네이버 웹툰 로그인

  • Refresh token 사용 가능






Client Credentials Grant Type

클라이언트 자격 증명 승인 방식

  • Client 자신이 관리하는 리소스 또는 authorization server 에 제한된 리소스 접근 권한이 설정된 경우 사용 가능

  • 자격 증명을 안전하게 저장할 수 있는 클라이언트에서만 사용해야 함

  • Refresh token 사용 불가






0개의 댓글