soowanlog

OAuth 본문

웹 보안/OAuth

OAuth

개발자솬
웹 보안/OAuth

OAuth

개발자솬 2024. 3. 14. 23:57
728x90
반응형
  • OAuth란?

Open Authorization의 약자로 애플리케이션을 이용할 때 사용자가 해당 애플리케이션의 ID, PW 등의 정보를 제공하지 않고, 신뢰할 수 있는 외부 애플리케이션의 Open API에 정보를 입력하여 해당 애플리케이션의 인증 과정을 처리해 주는 방식입니다.

 

OAuth를 사용한다면 해당 애플리케이션의 서비스를 이용하기 위해 회원가입 할 필요 없이 구글 또는 네이버와 같이 이미 가입된 계정을 통해 빠르게 서비스에 가입할 수 있습니다.

또한 검증되지 않은 애플리케이션에서 OAuth를 사용한다면 직접 사용자의 민감한 정보가 노출되지 않고 인증 권한에 대한 허가를 미리 구해야 하므로 더 안전하게 사용할 수 있습니다.

※ OAuth 2.0


OAuth 1.0a의 단순화된 버전으로 더 간단하고 유연한 인증 및 권한 부여 프로세스를 제공.
  • OAuth 2.0의 용어

- Resource Server

OAuth 2.0 서비스를 제공하고 Resource를 관리하는 서버입니다.

구글, 네이버, 카카오 등이 있습니다.

 

- Local Server

Client의 요청을 수락하고 응답할 수 있는 서버입니다.

 

- Resource Owner

Resource Server의 계정을 소유하고 있는 사용자입니다.

 

- Client

Resource Server의 API를 사용하여 정보를 가져오려는 애플리케이션 서버입니다.

 

- AccessToken

이 토큰으로 Resource Server에 요청해서 개인 정보를 받을 수 있습니다.

 

- RefreshToken

AccessToken의 만료, 위변조 등의 이유로 더 이상 사용이 불가할 때 이 토큰으로 재발급 받을 수 있습니다.

 

- Authorization Server

Client가 Resource Server의 서비스를 사용할 수 있게 인증하고 토큰을 발행해주는 서버입니다.

구글, 네이버, 카카오 등의 인증 서버입니다.

 

- Authorization Code

AccessToken을 발급받기 전 필요한 Code입니다.

Client는 Authorization Code를 받아온 후 client secret과 code를 사용해 AccessToken을 받아오게 됩니다.

 

- Scope

AccessToken으로 접근 가능한 Resource의 범위입니다.

  • Authorization Code Grant

OAuth 2.0의 다양한 인증 플로우 중 하나로 서버 사이드 애플리케이션에 적합한 인증 플로우입니다.

 

인증 과정은

1. Resource Owner은 특정 애플리케이션(Client)에서 OAuth 서비스를 요청합니다.

 

2. Client는 Authorization Server에 Authorization Code를 요청합니다. 

 

3. Authorization Server 는 redirect를 통해 Client에게 Authorization Code를 부여합니다.

 

4. Client는 Local Server에 Authorization Server에서 전달받은 Authorization Code를 보냅니다.

 

5. Local Server는 Authorization Code를 다시 Authorization Server에 전달해 AccessToken을 전달받습니다.

 

6. Local Server는 전달받은 AccessToken으로 Resource Server에 유저 정보를 요청합니다.

 

7. Resource Server는 AccesToken이 가지고 있는 Scope에 따라 제한된 유저 정보를 Local Server에게 전달합니다.

 

7. Local Server는 전달받은 유저 정보를 Client에게 전달합니다.

  • 다양한 OAuth 2.0 인증 플로우

위에서 소개한 Authorization Code Grant 외에도 Implicit Grant, Resource owner Password Credentials Grant, Client Credentials Grant 등 다양한 인증 풀로우가 있습니다.

참    고    자    료

- OAuth란? / OAuth 2.0 인증 과정 예시 | BE_성하

 

- OAuth란 | jung_ho9

 

- OAuth 2.0란? (개념 + 인증방식) | 개발자 염상진

 

- OAuth 2.0 이해하기: 인증과 인가의 현대적 접근 | f-lab.kr

728x90
반응형