- 인쇄
- PDF
Ncloud Single Sign-On 개념
- 인쇄
- PDF
Ncloud Single Sign-On을 연동하는 방법을 학습하기에 앞서 Ncloud Single Sign-On 연동에 필요한 몇 가지 개념을 설명합니다. 설명하려는 주요 개념은 다음과 같습니다.
- OAuth 2.0 정의
- OAuth 2.0 역할
- OpenID Connect
- Access Token
- Refresh Token
- ID Token
- OAuth 2.0 인증 플로우
- SAML 2.0 정의
- SAML 2.0 역할
OAuth 2.0 정의
OAuth 2.0은 권한 부여를 위한 개방형 표준 인증 프로토콜입니다. OAuth 2.0은 리소스를 소유하고 있는 사용자 대신 애플리케이션에 리소스 서버에 접근할 수 있는 권한을 위임합니다.
OAuth 2.0 역할
OAuth 2.0에서 정의하는 역할은 다음과 같습니다.
역할 | 정의 |
---|---|
Resource Owner | 보호된 리소스에 대한 접근할 수 있는 자격을 승인할 수 있는 사용자. Resource Owner는 보호된 리소스를 소유하며, 접근 권한을 가진 Client가 Resource Owner를 대신하여 리소스에 접근. |
Client | Resource Owner 대신 자격 증명인 Access Token을 발급받아 보호된 리소스에 접근하는 응용 프로그램 |
Identity Provider | Resource Owner를 인증하고 Resource Owner의 권한 승인에 따라 Client에게 Access Token을 발급하는 서버 |
Resource Server | Client가 Access Token을 이용하여 리소스에 접근할 때 접근 요청을 확인 및 응답하고 보호된 리소스를 제공하는 서버 |
OpenID Connect
OpenID Connect는 OAuth 2.0을 기반으로 Token 발급 시 IdP에서 사용자 정보를 담은 ID Token을 발급하는 프로토콜입니다.
Access Token
Access Token은 Client가 보호된 리소스에 접근하기 위해 권한이 인가되었음을 나타내는 자격 증명으로, IdP에서 발급된 문자열을 말합니다. Client는 Access Token을 이용해 Resource Server에 접근할 수 있습니다.
Refresh Token
Refresh Token은 IdP에서 발급되는 Token으로, 만료된 Access Token의 만료 시간을 연장하여 발급할 경우 또는 동일하거나 좁은 Scope의 추가 Access Token 발급 시 사용됩니다. Client가 Refresh Token을 포함하여 Access Token 발급 API를 IdP로 보내면 위조 또는 변조되지 않았는지 확인한 후 Access Token을 발급합니다.
ID Token
ID Token은 사용자 정보를 담은 JWT 형식의 Token으로, Token 발급 요청 시 scope
에 id_token
을 포함할 경우 Access Token과 함께 IdP에서 발급됩니다.
OAuth 2.0 인증 플로우
OAuth 2.0 인증 프로토콜의 플로우는 다음과 같습니다.
여기에서는 Resource Owner가 플로우를 시작해 Client가 보호된 리소스에 접근하기까지의 OAuth 2.0의 플로우를 설명합니다. 플로우에 사용되는 API에 대한 자세한 설명은 Ncloud Single Sign-On 연동 API를 참고해 주십시오.
Authorization Code 플로우
Authorization Code 플로우는 가장 일반적인 인증 플로우로, 플로우에 대한 설명은 다음과 같습니다.
- Resource Owner가 로그인 버튼을 클릭하여 플로우를 시작합니다.
- Client가 보호된 리소스에 접근하기 위해 응답 방식을 코드로 설정한 후 권한 부여를 요청합니다.
- IdP가 Resource Owner에게 개인 정보 제공에 대한 동의 페이지 및 로그인 페이지를 전달합니다.
- Resource Owner가 동의 및 로그인으로 권한 부여를 승인합니다.
- IdP가 Authorization code를 Client에 전달합니다.
- Client가 Authorization code를 이용해 IdP에게 Access Token 발급을 요청합니다.
- IdP에서 Authorization code를 확인한 후 Token을 발급합니다.
- Access Token을 가진 Client가 Resource Server에 접근하여 보호된 리소스를 요청합니다.
- Resource Server가 요청된 리소스를 Client에게 전달합니다.
PKCE 플로우
PKCE 플로우는 Authorization Code 플로우로 진행 시 보안을 강화해주는 기능으로, PKCE를 포함한 플로우에 대한 설명은 다음과 같습니다.
- Resource Owner가 로그인 버튼을 클릭하여 플로우를 시작합니다.
- Client가 Code Verifier 및 Code Challenge를 생성합니다.
- 권한 부여 요청 시 Client가 생성한 Code Challenge와 Code Challenge Method를 포함하여 전달하면 IdP에 그 값이 저장됩니다.
- IdP가 Resource Owner에게 개인 정보 제공에 대한 동의 페이지 및 로그인 페이지를 전달합니다.
- Resource Owner가 동의 및 로그인으로 권한 부여를 승인합니다.
- IdP가 Authorization code를 Client에 전달합니다.
- Client가 Code Verifier와 Authorization code를 포함하여 IdP에게 Access Token 발급을 요청합니다.
- IdP가 저장된 Code Challenge와 Code Verifier를 비교하여 일치 여부를 확인합니다.
- 두 값이 일치할 경우 IdP에서 Access Token을 발급합니다.
- Access Token을 가진 Client가 Resource Server에 접근하여 보호된 리소스를 요청합니다.
- Resource Server가 요청된 리소스를 Client에게 전달합니다.
Implicit 플로우
Implicit 플로우는 자격 증명을 안전하게 저장하고 관리하기 어려운 Client 환경에서 적합한 플로우로, 플로우에 대한 설명은 다음과 같습니다.
- Resource Owner가 로그인 버튼을 클릭하여 플로우를 시작합니다.
- Client가 응답 방식을 Token으로 설정한 후 권한 부여를 요청합니다.
- IdP가 Resource Owner에게 개인 정보 제공에 대한 동의 페이지 및 로그인 페이지를 전달합니다.
- Resource Owner가 동의 및 로그인으로 권한 부여를 승인합니다.
- IdP에서 Access Token을 발급합니다.
- Access Token을 가진 Client가 Resource Server에 접근하여 보호된 리소스를 요청합니다.
- Resource Server가 요청된 리소스를 Client에게 전달합니다.
SAML 2.0 정의
SAML 2.0은 웹 기반의 개방형 표준 인증 프로토콜입니다. 애플리케이션 간 사용자 인증 및 권한 정보를 주고 받을 때 사용되는 표준 정보 형식으로 SAML 2.0을 통해 IdP와 SP가 사용자의 정보를 안전하게 교환하고 인증할 수 있습니다.
SAML 2.0 역할
SAML 2.0에서 정의하는 역할은 다음과 같습니다.
역할 | 정의 |
---|---|
Service Provider (SP) | 서비스를 제공하는 주체. 주로 SSO 사용자가 이용하려는 애플리케이션이나 서비스를 의미하며 Identity Provider (IdP)에게 사용자의 인증 정보를 요청함 |
Identify Provider (IdP) | Service Provider (SP)가 요청한 사용자의 인증 정보를 검증하고 Service Provider (SP)에게 사용자의 인증 정보를 제공하는 시스템 |
SAML Request | Identity Provide (IdP)와 Service Provider (SP) 간에 인증 정보를 교환하기 위한 요청 메시지를 의미하며 SAML Assertion(인증 정보)을 생성하기 위한 정보를 포함 |
SAML Response | Identity Provider (IdP)와 Service Provider (SP) 간에 인증 정보를 교환하기 위한 응답 메시지를 의미하며 SAML Assertion(인증 정보) 및 기타 필요한 메타데이터가 포함. 이를 통해 IdP가 사용자의 인증 정보를 검증한 후, SP에게 인증 결과를 제공 |
SAML Assertion | ID, 인증 시간, 인증 방법 등 사용자의 인증 정보를 포함하고 있는 XML 문서로 Identity Provider (IdP)에서 Service Provider (SP)로 전송. 이를 통해 SP는 사용자의 인증을 검증 |
ACS URL | Service Provider (SP)가 Assertion Consumer Service (ACS)를 제공하기 위해 사용하는 URL |