상세 컨텐츠

본문 제목

OAuth 개념 파해치기 (1/4)

Spring/Spring Security

by Chan.94 2024. 12. 18. 17:34

본문

반응형

OAuth란

OAuth(Open Authorization) 인증을 위한 개방형 표준 프로토콜이다.

 

OAuth는 리소스를 소유하고 있는 소유자(Resource Owner)를 대신하여 리소스(Resource)에 대한 접근을 제어할 수 있다. 
이 프로토콜은 접근하고자 하는 리소스를 소유하고 있는 리소스 소유자(Resource Owner)와 리소스 서버(Resource Server), 이를 사용하고자 하는 클라이언트(Client), 그리고 접근 권한을 관리하는 인증 서버(Authorization Server)의 승인 상호작용으로 유저에게 인증과 인가를 제공하여 결과적으로 리소스를 접근하게 할 수 있다.

구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능을 제공하고 있다.

나무위키
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다.

 

쉽게 말하자면, Client가 Resource Owner의 타사 플랫폼 정보에 접근하기 위해서 권한을 타사 플랫폼으로부터 위임받는 것이다.

 

OAuth의 목적은 최종적으로 Access Token을 발급하는 것이다.
한 번의 인증 이후에 실제로 리소스에 접근하기 위해서 필요한 것은 Access Token이다.

OAuth2 구성 요소

  • Resource Owner
    애플리케이션을 이용하려는 Resource Server의 계정을 소유하고 있는 사용자
  • Client
    • 자사 또는 개인이 만든 애플리케이션 서버
    • Client라 칭하는 이유는 Resource server에게 필요한 자원을 요청하고 응답하는 관계이기 때문
  • Authorization Server
    • Resource Owner는 이 서버에서 인증 후 인가 코드(Authorization Code)를 발급받는다.
    • Client는 Resource Owner로부터 전달받은 인가 코드 (Authorization Code)로 Access token을 발급받을 수 있다.
  • Resource Server
    • 사용자의 개인정보를 가지고 있는 애플리케이션 (Google, Naver, Kakao 등) 회사 서버
    • Client는 Access Token을 Resource Server로 넘겨 개인정보를 응답받을 수 있다

OAuth2 Authorization Grant Type

OAuth2 프로토콜에서는 다양한 클라이언트 환경에 적합한 인증 및 권한의 위임 방법(Grant Type)을 제공하고 그 결과로 클라이언트에게 Access Token을 발급한다.

 

1. Authorization Code | 권한 부여 승인 코드 방식

 

  • Client와 Resource Owner사이에 Authorization Server를 두고 Access Token를 얻는 흐름을 가진다.
  • Client는 Authorization Server를 통해서 웹 사이트(소셜 로그인 화면)가 열리고 이곳에서 Resource Owner라는 것을 인증한다.  그 이후 Authorization Code를 받고 이를 Access Token으로 교환한다.

2. Implicit │ 암묵적 승인 방식

  • Authorization Code Grant에서 Authorization Code 교환과정을 빼고 바로 Access Token을 발급받는 방법이다.

3. Client Credentials | 클라이언트 자격 증명 승인 방식

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

4. Resource Owner Password Credentials │ 자원 소유자 자격증명 승인 방식

  • 간단하게 username, password로 Access Token을 받는 방식이다.

OAuth 사용을 위해 애플리케이션 등록을 진행한 후 최종적으로 Spring Security에 적용시켜 보겠다.

이후 내용은 다음글에 정리하겠다.

 

반응형

관련글 더보기

댓글 영역

>