- 인쇄
- PDF
OAuth2.0 개념 및 연동
- 인쇄
- PDF
Classic/VPC 환경에서 이용 가능합니다.
Open Authorization 2.0 혹은 OAuth2.0은 웹 및 애플리케이션 인증 및 권한 부여를 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 third-party 애플리케이션이 사용자의 리소스에 접근하기 위한 절차를 정의하고 서비스 제공자의 API를 사용할 수 있는 권한을 부여합니다. 대표적으로 네이버 로그인, 구글 로그인과 같은 소셜 미디어 간편 로그인이 있습니다. OAuth2.0을 사용해 third-party 애플리케이션이 사용자의 소셜미디어 프로필 정보에 접근할 수 있도록 합니다. B2B PRISM Live Studio 역시 OAuth2.0을 사용하여 권한을 관리하기 때문에 OAuth2.0의 기본 개념을 안내하고, 권한 부여 방법을 설명합니다.
OAuth 2.0 역할
OAuth 2.0을 구성하는 4가지 역할은 다음과 같습니다.
- 리소스 소유자(Resource Owner): OAuth 2.0 프로토콜을 사용하여 보호되는 리소스에 대한 액세스 권한을 부여하는 사용자(엔티티)입니다. 클라이언트를 인증(Authorize)하는 역할을 수행합니다. 예를 들어 네이버 로그인에서 네이버 아이디를 소유하고 third-party 애플리케이션(클라이언트)에 네이버 아이디로 소셜 로그인 인증을 하는 사용자를 의미합니다.
- 클라이언트(Client): OAuth 2.0을 사용하여 리소스에 접근하려는 third-party 애플리케이션이나 서비스입니다.
- 권한 서버(Authorization Server): 권한 서버는 클라이언트가 리소스 소유자의 권한을 얻을 수 있도록 도와주는 서버입니다. 권한 서버는 사용자 인증, 권한 부여 및 토큰 발급을 관리합니다.
- 리소스 서버(Resource Server): 리소스 서버는 보호되는 리소스를 호스팅하는 서버로, 액세스를 허용하거나 거부합니다. 이 서버는 OAuth 2.0 토큰을 사용하여 클라이언트에게 리소스에 액세스할 권한을 부여하고 실제 데이터를 제공합니다.
OAuth 2.0 용어
OAuth 2.0을 이해하기 위해 알아두어야 할 주요 용어는 다음과 같습니다.
- 액세스 토큰(Access Token): 클라이언트가 리소스 서버의 리소스에 접근하기 위한 권한을 부여받는 토큰입니다. 액세스 토큰은 권한 서버로부터 발급되며, 일반적으로 제한된 유효 기간을 가지고 있습니다.
- 리프레시 토큰(Refresh Token): 리프레시 토큰은 액세스 토큰의 유효 기간이 만료된 후 새로운 액세스 토큰을 받기 위한 토큰입니다. 이를 통해 사용자는 다시 로그인할 필요 없이 토큰 유효 시간 갱신만으로 계속 애플리케이션을 사용할 수 있습니다.
- 범위(Scope): 범위는 클라이언트가 리소스에 대한 어떤 작업을 수행할 수 있는지를 정의하는 문자열입니다. 범위는 권한 서버에 의해 정의되며, 클라이언트는 특정 범위의 액세스 권한을 요청할 수 있습니다.
- 인증 코드(Authorization Code): 인증 코드는 클라이언트가 액세스 토큰을 얻기 위한 중간 단계로 사용되는 코드입니다. 인증 코드 부여(Authorization Code Grant) 방식을 통해 권한 서버로부터 발급되며, 이를 사용하여 액세스 토큰과 리프레시 토큰을 얻을 수 있습니다.
OAuth 2.0 권한 부여 방식
OAuth 2.0에서는 클라이언트 애플리케이션이 리소스 서버에 접근할 권한을 부여하고 관리하기 위해 다양한 권한 부여 방식이 제공됩니다. 이 중 B2B PRISM Live Studio 인증에 사용되는 방식인 인증 코드 부여 방식에 대해서만 자세히 다루겠습니다.
인증 코드 부여(Authorization Code Grant)
권한 부여 승인을 위해 자체 생성한 인증 코드를 전달하는 방식으로 가장 많이 사용되는 기본 방식입니다. 가장 보안이 높은 방식으로 액세스 토큰이 직접 클라이언트에게 노출되지 않습니다. 웹 애플리케이션 또는 서버 애플리케이션과 같이 신뢰할 수 있는 환경에서 사용됩니다.
OAuth 2.0 권한 부여 과정
권한 부여 과정은 다음과 같습니다.
- 인증 코드 요청
- 클라이언트가 사전에 권한 서버로부터 발급한 클라이언트 ID, redirect_uri 정보와 함께 response_type을 code로 지정하여 요청합니다.
- 로그인
- 권한 서버에서 로그인 페이지를 제공하고 리소스 소유자가 로그인 합니다.
- 인증 코드 전달
- 로그인에 성공하면 권한 서버는 전달받은 redirect_uri로 인증 코드를 전달합니다.
- 엑세스 토큰 발급
- 클라이언트가 권한 부여 승인 코드를 통해 엑세스 토큰 (및 리프레시 토큰)을 발급받습니다.
- 이때 사전에 권한 서버로부터 발급한 클라이언트 ID와 클라이언트 시크릿 (Client Secret) 정보가 필요합니다.
호출 예시
호출 예시는 다음과 같습니다.
인증 코드 요청
curl -X GET https://authorization-server.example.com/oauth/authorize ?response_type=code &client_id=your_client_id &redirect_uri=your_redirect_uri &state=your_state &scope=your_scope
참고B2B PRISM Live Studio에서는 scope와 state 값을 사용하지 않습니다.
엑세스 토큰 발급
curl -X POST "https://authorization-server.example.com/token" \ -d "grant_type=authorization_code" \ -d "code=your_authorization_code" \ -d "client_id=your_client_id" \ -d "client_secret=your_client_secret" \ -d "redirect_uri=your_redirect_uri"
OAuth 2.0 인증에서 PRISM과 고객 서비스의 역할
B2B PRISM Live Studio는 OAuth2.0 클라이언트, 고객 서비스는 권한 서버이자 리소스 서버의 역할을 담당합니다.
고객 서비스 개발 가이드
OAuth2 인증에 해당하는 API가 구현되어야 합니다.
사전 등록 가이드
OAuth 2.0 인증을 사용하기 위해 NCP 대시보드 콘솔에 아래 항목을 사전에 등록해야 합니다.
- OAuth 2.0 인증 코드 발급 URL
- 미등록 시 기본값으로 호출합니다. (서비스 도메인 + /oauth/authorize)
- B2B PRISM Live Studio용 클라이언트 ID
- B2B PRISM Live Studio용 클라이언트 Secret