먼저 인증과 인가의 개념을 이해해봅시다.

 

인증(Authentication)은 사용자가 누구인지 확인하는 과정입니다. 

로그인 과정에서 이메일 주소와 비밀번호를 통해 사용자를 확인하는 것이 인증입니다.


인가(Authorization)인증된 사용자에게 특정 리소스에 대한 접근 권한을 부여하는 과정입니다.

예를 들어, 웹 페이지에 대한 읽기, 쓰기, 수정, 삭제 권한을 관리하는 것입니다.

 

인증 및 인가는 로그인 및 회원 가입 외에도 사용자의 권한을 관리하는 데 사용됩니다.

예를 들어, 웹사이트에서 관리자와 일반 사용자의 권한을 구분하여 관리하는 것도 인증 및 인가의 영역입니다.

 

 

Auth0과 OAuth 2.0 소개

 

Auth0은 인증 및 인가를 손쉽게 구현할 수 있는 서비스(라이브러리 개념)이며, 

그 안에는 다양한 인증 프로토콜이 포함되어 있습니다. 

 

Auth0의 핵심 기능으로는 아래 기능들이 있습니다.

  • 소셜 로그인 지원
  • 엔터프라이즈 로그인 연동
  • 싱글 사인온 (SSO)
  • 멀티팩터 인증 (MFA)
  • 사용자 관리

 

OAuth 2.0은 인터넷 사용자들이 계정 정보를 공유할 때,

암호를 공유하지 않고 JWT토큰을 통해 안전하게 인증 정보를 교환할 수 있는 인증 프로토콜입니다.

Auth0에서 OAuth 2.0을 지원하므로, 이 프로토콜을 사용하여 인증 및 인가 기능을 구현할 수 있습니다.

 

그럼 Auth0에서는 JWT 토큰을 사용할 수 없을까요? 

 

아닙니다. 

 

Auth0과 OAuth 2.0 둘 다 JSON Web Token (JWT)를 사용할 수 있지만, 

사용 목적과 토큰 발급 방식에 차이점이 있습니다.

Auth0에서 JWT 토큰 사용:
Auth0에서 발급되는 JWT 토큰은 주로 인증 및 인가 목적으로 사용됩니다. 

이 토큰은 클라이언트와 서버 간에 안전하게 정보를 전달하며, 서버는 토큰에 포함된 정보를 기반으로 사용자의 인증 상태를 확인할 수 있습니다. Auth0은 다양한 인증 프로토콜을 지원하며, 이 중 일부 프로토콜에서 JWT 토큰을 사용합니다.

OAuth 2.0에서 JWT 토큰 사용:
OAuth 2.0에서 JWT 토큰을 사용할때는 액세스 토큰을 일반적으로 사용하며, 사용자의 인증 상태와 제 3자 애플리케이션에 대한 접근 권한을 나타냅니다. OAuth 2.0 토큰 발급 과정에서 클라이언트는 인증 서버에게 사용자 인증을 요청하고, 

인증 서버는 사용자의 인증 정보를 검증한 후 JWT 형식의 액세스 토큰을 발급합니다. 

이 토큰은 클라이언트가 리소스 서버에 접근할 때 사용되며, 리소스 서버는 토큰을 기반으로 클라이언트에게 

접근 권한을 부여합니다.

즉, 둘 다 JWT 토큰을 사용하지만, Auth0은 주로 사용자 인증 및 인가를 위해 사용되고, OAuth 2.0에서는 제 3자 애플리케이션에 대한 접근 권한 부여를 위해 사용됩니다. 

 

제 3자 애플리케이션에 대한 접근 권한이라는게 헷갈릴수도있어 예를들어보면, 

사용자가 소셜 미디어 플랫폼에서 사진을 저장하고 있는데,

이 사진들을 다른 사진 편집 애플리케이션에서 사용하고자 할 때,

OAuth 2.0을 사용하여 사용자가 사진 편집 애플리케이션에게 사진을 읽고 쓰기 위한 권한을 부여할 수 있습니다.

이 과정에서 사용자는 자신의 아이디와 비밀번호를 사진 편집 애플리케이션에 직접 전달하지 않고, 

대신 OAuth 2.0 인증 프로세스를 통해 안전하게 권한을 부여하게 됩니다. 

이렇게 하면 사용자는 자신의 데이터에 대한 제어력을 유지하면서

제 3자 애플리케이션에 대한 접근 권한을 편리하게 관리할 수 있습니다.

 

결론적으로, Auth0은 여러 인증 프로토콜을 지원하는 도구이며, OAuth 2.0은 그 중 하나의 인증 프로토콜입니다. 

Auth0을 사용하면 개발자들은 OAuth 2.0과 같은 인증 프로토콜을 사용하여 

인증 및 인가 기능을 손쉽게 구현할 수 있습니다. 이를 통해 개발자들은 프로젝트에 필요한 인증 및 인가 기능을 

빠르게 구현하고, 보안에 대한 걱정을 줄일 수 있습니다.

 

 

 

복사했습니다!