다음을 통해 공유


Azure Active Directory B2C에서 OpenID Connect를 사용하여 웹 로그인

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

OpenID Connect는 OAuth 2.0을 기반으로 빌드된 인증 프로토콜로, 사용자를 웹 애플리케이션에 안전하게 로그인하는 데 사용할 수 있습니다. OpenID Connect의 Azure AD B2C(Azure Active Directory B2C) 구현을 사용하여 웹 애플리케이션의 등록, 로그인 및 기타 ID 관리 환경을 Microsoft Entra ID로 아웃소싱할 수 있습니다. 이 가이드에서는 언어 독립적 방식으로 수행하는 방법을 보여 줍니다. 오픈 소스 라이브러리를 사용하지 않고 HTTP 메시지를 보내고 받는 방법을 설명합니다.

비고

대부분의 오픈 소스 인증 라이브러리는 애플리케이션에 대한 JWT를 획득하고 유효성을 검사합니다. 사용자 고유의 코드를 구현하는 대신 이러한 옵션을 탐색하는 것이 좋습니다. 자세한 내용은 MSAL(Microsoft 인증 라이브러리)Microsoft ID 웹 인증 라이브러리 개요를 참조하세요.

OpenID Connect인증 프로토콜로 사용하기 위해 OAuth 2.0 권한 부여 프로토콜을 확장합니다. 이 인증 프로토콜을 사용하면 Single Sign-On을 수행할 수 있습니다. 클라이언트가 사용자의 ID를 확인하고 사용자에 대한 기본 프로필 정보를 가져올 수 있도록 하는 ID 토큰의 개념을 소개합니다.

또한 OpenID Connect를 사용하면 애플리케이션에서 액세스 토큰을 안전하게 획득 할 수 있습니다. 액세스 토큰을 사용하여 권한 부여 서버 가 보호하는 리소스에 액세스할 수 있습니다. 서버에서 호스트하고 브라우저를 통해 액세스하는 웹 애플리케이션을 빌드하는 경우 OpenID Connect를 사용하는 것이 좋습니다. 토큰에 대한 자세한 내용은 Azure Active Directory B2C의 토큰 개요를 참조하세요.

Azure AD B2C는 표준 OpenID Connect 프로토콜을 확장하여 단순한 인증 및 권한 부여 이상의 작업을 수행합니다. 사용자 흐름 매개 변수를 도입하여 OpenID Connect를 사용하여 등록, 로그인 및 프로필 관리와 같은 사용자 환경을 애플리케이션에 추가할 수 있습니다.

인증 요청 보내기

웹 애플리케이션이 사용자 인증 및 사용자 흐름 실행이 필요할 때, /authorize 엔드포인트로 사용자를 안내할 수 있습니다. 사용자는 사용자 흐름에 따라 작업을 수행합니다.

이 요청에서 클라이언트는 매개 변수의 사용자 scope 로부터 획득해야 하는 권한을 나타내고 실행할 사용자 흐름을 지정합니다. 요청의 작동 방식을 파악하려면 브라우저에 요청을 붙여넣고 실행합니다. 교체:

  • {tenant}와 사용자 테넌트의 이름을 함께 사용하십시오.
  • 00001111-aaaa-2222-bbbb-3333cccc4444 테넌트에 등록한 애플리케이션의 앱 ID를 사용합니다.
  • {application-id-uri}/{scope-name} 애플리케이션 ID URI 및 테넌트에 등록한 애플리케이션의 범위를 사용합니다.
  • {policy}와 함께 예를 들어, 테넌트에 있는 b2c_1_sign_in 정책 이름을 사용합니다.
GET /{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
Host: {tenant}.b2clogin.com

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=code+id_token
&redirect_uri=https%3A%2F%2Fjwt.ms%2F
&response_mode=fragment
&scope=openid%20offline_access%20{application-id-uri}/{scope-name}
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
매개 변수 필수 설명
임차인 Azure AD B2C 테넌트의 이름입니다. 사용자 지정 도메인을 사용하는 경우 tenant.b2clogin.com을(를) 당신의 도메인, 예를 들어 fabrikam.com, 으로 대체하십시오.
{정책} 앱이 실행되는 사용자 흐름 또는 정책입니다. Azure AD B2C 테넌트에서 만드는 사용자 흐름의 이름을 지정합니다. 예: b2c_1_sign_in, b2c_1_sign_up 또는 b2c_1_edit_profile.
클라이언트_아이디 Azure Portal에서 애플리케이션에 할당한 애플리케이션 ID입니다.
논스 권장 결과 ID 토큰에 클레임으로 포함된 요청(애플리케이션에서 생성)에 포함된 값입니다. 그러면 애플리케이션에서 이 값을 확인하여 토큰 재생 공격을 완화할 수 있습니다. 값은 일반적으로 요청의 원본을 식별하는 데 사용할 수 있는 임의로 설정된 고유 문자열입니다.
응답 유형 OpenID Connect에 대한 ID 토큰을 포함해야 합니다. 웹 애플리케이션에서 웹 API를 호출하기 위한 토큰도 필요한 경우 사용할 code+id_token수 있습니다.
범위 공백으로 구분된 범위 목록입니다. openid 범위는 사용자에게 로그인하고 ID 토큰 형식으로 사용자에 대한 데이터를 가져올 권한을 나타냅니다. offline_access 범위는 웹 애플리케이션에 대한 선택 사항입니다. 리소스에 대한 확장된 액세스를 위해 애플리케이션 에 새로 고침 토큰 이 필요했음을 나타냅니다. https://{tenant-name}/{app-id-uri}/{scope}는 웹 API와 같은 보호된 리소스에 대한 권한을 나타냅니다. 자세한 내용은 액세스 토큰 요청을 참조하세요.
프롬프트 아니오 필요한 사용자 상호 작용의 유형입니다. 현재 유효한 값은 login사용자가 해당 요청에 자격 증명을 입력하도록 강제하는 값입니다.
리다이렉트_URI 애플리케이션의 매개 변수 redirect_uri는 서버가 인증 응답을 애플리케이션으로 보내는 곳입니다. URL로 인코딩되어야 한다는 점을 제외하고 Azure Portal에 등록한 매개 변수 중 하나 redirect_uri 와 정확히 일치해야 합니다.
응답 모드 아니오 결과 권한 부여 코드를 애플리케이션에 다시 보내는 데 사용되는 메서드입니다. query, form_post, 또는 fragment일 수 있습니다. 최상의 보안을 위해 응답 모드를 사용하는 form_post 것이 좋습니다.
아니오 권한 부여 서버가 토큰 응답에 반환하는 요청에 포함할 수 있는 값입니다. 원하는 콘텐츠의 문자열일 수 있습니다. 일반적으로 교차 사이트 요청 위조 공격을 방지하기 위해 임의로 생성된 고유 값이 사용됩니다. 또한 상태는 인증 요청이 발생하기 전에 애플리케이션의 사용자 상태에 대한 정보를 인코딩하는 데 사용됩니다(예: 해당 상태가 있는 페이지). Azure Portal에서 여러 리디렉션 URL을 등록하지 않으려면 매개 변수를 사용하여 state 다른 요청으로 인해 애플리케이션의 응답을 Azure AD B2C 서비스와 구분할 수 있습니다.
로그인 힌트 아니오 로그인 페이지의 로그인 이름 필드를 미리 채우기 위해 사용할 수 있습니다. 자세한 내용은 로그인 이름 미리 채워기를 참조하세요.
domain_hint (도메인 힌트) 아니오 로그인에 사용해야 하는 소셜 ID 공급자에 대한 힌트를 Azure AD B2C에 제공합니다. 유효한 값이 포함된 경우 사용자는 ID 공급자 로그인 페이지로 직접 이동합니다. 자세한 내용은 소셜 공급자에 대한 로그인 리디렉션을 참조하세요.
사용자 지정 매개 변수 아니오 사용자 지정 정책과 함께 사용할 수 있는 사용자 지정 매개 변수입니다. 예를 들어 동적 사용자 지정 페이지 콘텐츠 URI 또는 키-값 클레임 해결자.

이 시점에서 사용자에게 워크플로를 완료하라는 메시지가 표시됩니다. 사용자는 사용자 이름과 암호를 입력하거나, 소셜 ID로 로그인하거나, 디렉터리에 등록해야 할 수 있습니다. 사용자 흐름이 정의되는 방법에 따라 다른 여러 단계가 있을 수 있습니다.

사용자가 사용자 흐름을 완료하면 매개 변수에 지정한 메서드를 사용하여 지정된 redirect_uri 매개 변수에서 애플리케이션에 response_mode 응답이 반환됩니다. 응답은 사용자 흐름과 관계없이 이전의 각 사례에 대해 동일합니다.

성공적인 응답 사용 response_mode=fragment 은 다음과 같습니다.

GET https://jwt.ms/#
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=arbitrary_data_you_can_receive_in_the_response
매개 변수 설명
id_token (아이디 토큰) 애플리케이션이 요청한 ID 토큰입니다. ID 토큰을 사용하여 사용자 ID를 확인하고 사용자와 세션을 시작할 수 있습니다.
코드 사용한 response_type=code+id_token경우 애플리케이션에서 요청한 권한 부여 코드입니다. 애플리케이션은 권한 부여 코드를 사용하여 대상 리소스에 대한 액세스 토큰을 요청할 수 있습니다. 권한 부여 코드는 일반적으로 약 10분 후에 만료됩니다.
state 매개 변수가 요청에 포함된 경우 동일한 값이 응답에 표시됩니다. 애플리케이션은 요청 및 응답의 state 값이 동일한지 확인해야 합니다.

오류 응답도 redirect_uri 매개 변수로 전송되어 애플리케이션에서 적절하게 처리할 수 있습니다.

GET https://jwt.ms/#
error=access_denied
&error_description=AADB2C90091%3a+The+user+has+cancelled+entering+self-asserted+information.%0d%0aCorrelation+ID%3a+xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%0d%0aTimestamp%3a+xxxx-xx-xx+xx%3a23%3a27Z%0d%0a
&state=arbitrary_data_you_can_receive_in_the_response
매개 변수 설명
오류 발생하는 오류 유형을 분류하는 데 사용할 수 있는 코드입니다.
오류 설명 인증 오류의 근본 원인을 식별하는 데 도움이 되는 특정 오류 메시지입니다.
state 매개 변수가 요청에 포함된 경우 동일한 값이 응답에 표시됩니다. 애플리케이션은 요청 및 응답의 state 값이 동일한지 확인해야 합니다.

ID 토큰 유효성 검사

ID 토큰을 받는 것만으로는 사용자를 인증하기에 충분하지 않습니다. 애플리케이션의 요구 사항에 따라 ID 토큰의 서명을 검증하고 토큰의 주장을 확인합니다. Azure AD B2C는 JWT(JSON 웹 토큰) 및 공개 키 암호화를 사용하여 토큰에 서명하고 유효한지 확인합니다.

비고

대부분의 오픈 소스 인증 라이브러리는 애플리케이션에 대한 JWT의 유효성을 검사합니다. 자체 유효성 검사 논리를 구현하는 대신 이러한 옵션을 탐색하는 것이 좋습니다. 자세한 내용은 MSAL(Microsoft 인증 라이브러리)Microsoft ID 웹 인증 라이브러리 개요를 참조하세요.

Azure AD B2C에는 애플리케이션이 런타임에 Azure AD B2C에 대한 정보를 가져올 수 있는 OpenID Connect 메타데이터 엔드포인트가 있습니다. 이 정보에는 엔드포인트, 토큰 콘텐츠 및 토큰 서명 키가 포함됩니다. B2C 테넌트의 각 사용자 흐름에 대한 JSON 메타데이터 문서가 있습니다. 예를 들어 b2c_1_sign_in에 있는 사용자 흐름의 메타데이터 문서는 fabrikamb2c.onmicrosoft.com 다음 위치에 있습니다.

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/v2.0/.well-known/openid-configuration

이 구성 문서의 jwks_uri속성 중 하나는 동일한 사용자 흐름에 대한 값이 다음과 같은 것입니다.

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/discovery/v2.0/keys

ID 토큰에 서명하는 데 사용된 사용자 흐름을 확인하려면 두 가지 옵션이 있습니다. 먼저 사용자 흐름 이름이 ID 토큰의 acr 클레임에 포함됩니다. 사용자 흐름을 나타내는 클레임을 참조하세요. 다른 옵션은 요청을 실행할 때 매개 변수 값으로 state 사용자 흐름을 인코딩한 다음 디코딩하여 사용된 사용자 흐름을 확인하는 것입니다. 두 방법 중 하나가 유효합니다.

OpenID Connect 메타데이터 엔드포인트에서 메타데이터 문서를 획득한 후 RSA 256 공개 키를 사용하여 ID 토큰의 서명의 유효성을 검사할 수 있습니다. 이 엔드포인트에는 각각 kid 클레임으로 식별되는 여러 키가 나열될 수 있습니다. ID 토큰의 헤더에는 kid 청구가 포함되어 있으며, 이는 ID 토큰에 서명하는 데 사용된 키를 나타냅니다.

Azure AD B2C에서 토큰을 확인하려면 지수(e) 및 모듈러스(n)를 사용하여 공개 키를 생성해야 합니다. 이렇게 하려면 선택한 프로그래밍 언어로 공개 키를 생성하는 방법을 배워야 합니다. RSA 프로토콜을 사용하는 공개 키 생성에 대한 공식 설명서는 다음에서 찾을 수 있습니다. https://tools.ietf.org/html/rfc3447#section-3.1

ID 토큰의 서명의 유효성을 검사한 후에는 확인해야 하는 다양한 클레임이 있습니다. 예를 들면 다음과 같습니다.

  • nonce 토큰 재생 공격을 방지하기 위해 클레임의 유효성을 검사합니다. 해당 값은 로그인 요청에서 지정한 값이어야 합니다.
  • 클레임의 유효성을 aud 검사하여 애플리케이션에 대해 ID 토큰이 발급되었는지 확인합니다. 해당 값은 애플리케이션의 애플리케이션 ID여야 합니다.
  • iatexp 클레임의 유효성을 검사하여 ID 토큰이 만료되지 않았는지 확인합니다.

수행해야 하는 몇 가지 유효성 검사도 있습니다. 유효성 검사는 OpenID Connect Core 사양에 자세히 설명되어 있습니다. 시나리오에 따라 더 많은 클레임의 유효성을 검사할 수도 있습니다. 몇 가지 일반적인 유효성 검사에는 다음이 포함됩니다.

  • 사용자/조직이 애플리케이션에 등록되었는지 확인합니다.
  • 사용자가 적절한 권한을 가지고 있는지 확인합니다.
  • Microsoft Entra 다단계 인증과 같은 특정 인증 강도가 발생했는지 확인합니다.

ID 토큰의 유효성을 검사한 후 사용자와 세션을 시작할 수 있습니다. ID 토큰의 클레임을 사용하여 애플리케이션에서 사용자에 대한 정보를 가져올 수 있습니다. 이 정보에는 표시, 레코드 및 권한 부여가 사용됩니다.

토큰 가져오기

사용자 흐름만 실행하기 위해 웹 애플리케이션이 필요한 경우 다음 몇 섹션을 건너뛸 수 있습니다. 이러한 섹션은 Azure AD B2C 자체로 보호되는 웹 API에 대해 인증된 호출을 수행해야 하는 웹 애플리케이션에만 적용됩니다.

획득한 권한 부여 코드를 사용하여 response_type=code+id_token 엔드포인트로 POST 요청을 보내 원하는 리소스에 대한 토큰을 교환할 수 있습니다(/token 사용). Azure AD B2C에서는 요청에서 범위를 지정하여 다른 API에 대한 액세스 토큰 을 평소와 같이 요청할 수 있습니다.

앱의 자체 백 엔드 Web API에 대한 액세스 토큰을 요청할 수도 있습니다. 이 경우 앱의 클라이언트 ID를 요청된 범위로 사용하여 해당 클라이언트 ID를 "대상 그룹"으로 사용하여 액세스 토큰을 만듭니다.

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=00001111-aaaa-2222-bbbb-3333cccc4444 offline_access
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
매개 변수 필수 설명
임차인 Azure AD B2C 테넌트 이름
{정책} 권한 부여 코드를 획득하는 데 사용된 사용자 흐름입니다. 이 요청에서는 다른 사용자 흐름을 사용할 수 없습니다. POST 본문이 아닌 쿼리 문자열에 이 매개 변수를 추가합니다.
클라이언트_아이디 Azure Portal에서 애플리케이션에 할당한 애플리케이션 ID입니다.
클라이언트 비밀번호 예, 웹 애플리케이션에서 Azure Portal에서 생성된 애플리케이션 비밀입니다. 클라이언트 비밀은 클라이언트가 클라이언트 비밀을 안전하게 저장할 수 있는 웹앱 시나리오에 대해 이 흐름에서 사용됩니다. 네이티브 앱(퍼블릭 클라이언트) 시나리오의 경우 클라이언트 비밀을 안전하게 저장할 수 없으므로 이 흐름에서 사용할 수 없습니다. 클라이언트 암호를 사용하는 경우 주기적으로 변경합니다.
코드 사용자 흐름의 시작 부분에서 획득한 권한 부여 코드입니다.
인증 유형 권한 부여 코드 흐름에 사용해야 하는 권한 부여 유형입니다 authorization_code .
리다이렉트_URI 아니오 redirect_uri 권한 부여 코드를 받은 애플리케이션의 매개 변수입니다.
범위 아니오 공백으로 구분된 범위 목록입니다. 범위는 openid 사용자에게 로그인하고 사용자에 대한 데이터를 id_token 매개 변수 형식으로 가져올 수 있는 권한을 나타냅니다. 클라이언트와 동일한 애플리케이션 ID로 표현되는 애플리케이션의 자체 백 엔드 웹 API에 토큰을 가져오는 데 사용할 수 있습니다. 범위는 offline_access 리소스에 대한 확장된 액세스를 위해 애플리케이션에 새로 고침 토큰이 필요했음을 나타냅니다.

성공적인 토큰 응답은 다음과 같습니다.

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "00001111-aaaa-2222-bbbb-3333cccc4444 offline_access",
    "expires_in": "3600",
    "expires_on": "1644254945",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
매개 변수 설명
이전 사용 불가 토큰이 유효해지는 시간을 나타내는 에포크(Epoch) 시간입니다.
토큰 유형 토큰 형식 값입니다. Bearer 는 지원되는 유일한 형식입니다.
액세스 토큰 (access_token) 요청한 서명된 JWT입니다.
범위 토큰이 가질 수 있는 유효한 범위들입니다.
만료 시간 액세스 토큰이 유효한 시간(초)입니다.
만료일 액세스 토큰이 유효하지 않은 에포크 시간입니다.
새로고침_토큰 OAuth 2.0 새로 고침 토큰입니다. 애플리케이션은 현재 토큰이 만료된 후 이 토큰을 사용하여 더 많은 토큰을 획득할 수 있습니다. 새로 고침 토큰을 사용하여 오랜 시간 동안 리소스에 대한 액세스를 유지할 수 있습니다. 새로 고침 토큰을 받으려면 권한 부여 및 토큰 요청 모두에서 범위 offline_access 가 사용되어야 합니다.

오류 응답은 다음과 같습니다.

{
    "error": "invalid_grant",
    "error_description": "AADB2C90080: The provided grant has expired. Please re-authenticate and try again. Current time: xxxxxxxxxx, Grant issued time: xxxxxxxxxx, Grant expiration time: xxxxxxxxxx\r\nCorrelation ID: xxxxxxxx-xxxx-xxxX-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-16 xx:10:52Z\r\n"
}
매개 변수 설명
오류 발생하는 오류 유형을 분류하는 데 사용할 수 있는 코드입니다.
오류 설명 인증 오류의 근본 원인을 식별하는 데 도움이 되는 메시지입니다.

토큰 사용

액세스 토큰을 성공적으로 획득한 후에는 헤더에 토큰을 포함하여 백 엔드 웹 API에 대한 요청에서 토큰을 Authorization 사용할 수 있습니다.

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

토큰 새로 고침

액세스 토큰 및 ID 토큰은 수명이 짧습니다. 만료된 후 리소스에 계속 액세스하려면 새로 고쳐야 합니다. 액세스 토큰을 새로 고치면 Azure AD B2C는 새 토큰을 반환합니다. 새로 고친 액세스 토큰은 nbf (유효 시작 시간), iat (발급 시점), 및 exp (만료 시간) 클레임 값이 업데이트됩니다. 다른 모든 클레임 값은 이전 액세스 토큰의 값과 유사합니다.

엔드포인트에 다른 POST 요청을 제출하여 토큰을 /token 새로 고칩니다. 이번에는 refresh_token 매개 변수를 code 매개 변수를 대신 제공합니다.

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=openid offline_access
&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
매개 변수 필수 설명
임차인 Azure AD B2C 테넌트 이름
{정책} 원래 새로 고침 토큰을 획득하는 데 사용된 사용자 흐름입니다. 이 요청에서는 다른 사용자 흐름을 사용할 수 없습니다. POST 본문이 아닌 쿼리 문자열에 이 매개 변수를 추가합니다.
클라이언트_아이디 Azure Portal에서 애플리케이션에 할당한 애플리케이션 ID입니다.
클라이언트 비밀번호 예, 웹 애플리케이션에서 Azure Portal에서 생성된 애플리케이션 비밀입니다. 클라이언트 비밀은 클라이언트가 클라이언트 비밀을 안전하게 저장할 수 있는 웹앱 시나리오에 대해 이 흐름에서 사용됩니다. 네이티브 앱(퍼블릭 클라이언트) 시나리오의 경우 클라이언트 비밀을 안전하게 저장할 수 없으므로 이 호출에서는 사용할 수 없습니다. 클라이언트 암호를 사용하는 경우 정기적으로 변경하세요.
인증 유형 refresh_token는 이 권한 부여 코드 흐름의 부분에 반드시 일치하는 보조금 유형이어야 합니다.
새로고침_토큰 흐름의 두 번째 부분에서 획득한 원래 새로 고침 토큰입니다. offline_access 범위는 새로 고침 토큰을 받기 위해 권한 부여 및 토큰 요청 모두에서 사용되어야 합니다.
리다이렉트_URI 아니오 redirect_uri 권한 부여 코드를 받은 애플리케이션의 매개 변수입니다.
범위 아니오 공백으로 구분된 범위 목록입니다. openid 범위는 사용자에게 로그인하고 ID 토큰 형식으로 사용자에 대한 데이터를 가져올 권한을 나타냅니다. 클라이언트와 동일한 애플리케이션 ID로 표시되는 애플리케이션의 자체 백 엔드 웹 API에 토큰을 보내는 데 사용할 수 있습니다. 범위는 offline_access 리소스에 대한 확장된 액세스를 위해 애플리케이션에 새로 고침 토큰이 필요했음을 나타냅니다.

성공적인 토큰 응답은 다음과 같습니다.

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "00001111-aaaa-2222-bbbb-3333cccc4444 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
    "refresh_token_expires_in": "1209600"
}
매개 변수 설명
이전 사용 불가 토큰이 유효해지는 시간을 나타내는 에포크(Epoch) 시간입니다.
토큰 유형 토큰 형식 값입니다. Bearer 는 지원되는 유일한 형식입니다.
액세스 토큰 (access_token) 요청된 서명된 JWT입니다.
범위 토큰이 가질 수 있는 유효한 범위들입니다.
만료 시간 액세스 토큰이 유효한 시간(초)입니다.
새로고침_토큰 OAuth 2.0 새로 고침 토큰입니다. 애플리케이션은 현재 토큰이 만료된 후 이 토큰을 사용하여 추가 토큰을 획득할 수 있습니다. 새로 고침 토큰을 사용하여 오랜 시간 동안 리소스에 대한 액세스를 유지할 수 있습니다.
갱신 토큰 만료 기간 새로 고침 토큰이 유효한 시간(초)입니다.

오류 응답은 다음과 같습니다.

{
    "error": "invalid_grant",
    "error_description": "AADB2C90129: The provided grant has been revoked. Please reauthenticate and try again.\r\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-xx xx:xx:xxZ\r\n",
}
매개 변수 설명
오류 발생하는 오류 유형을 분류하는 데 사용할 수 있는 코드입니다.
오류 설명 인증 오류의 근본 원인을 식별하는 데 도움이 되는 메시지입니다.

로그아웃 요청 보내기.

애플리케이션에서 사용자를 로그아웃하려는 경우 애플리케이션의 쿠키를 지우거나 사용자와 세션을 종료하는 것만으로는 충분하지 않습니다. 사용자를 Azure AD B2C로 리디렉션하여 로그아웃합니다. 이렇게 하지 않으면 사용자가 자격 증명을 다시 입력하지 않고 애플리케이션에 다시 인증할 수 있습니다. 자세한 내용은 Azure AD B2C 세션 동작을 참조하세요.

사용자를 로그아웃하려면 앞에서 설명한 OpenID Connect 메타데이터 문서에 나열된 end_session_endpoint로 사용자를 리디렉션합니다.

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Fjwt.ms%2F
매개 변수 필수 설명
임차인 Azure AD B2C 테넌트 이름입니다. 사용자 지정 도메인을 사용하는 경우 tenant.b2clogin.com을(를) 당신의 도메인, 예를 들어 fabrikam.com, 으로 대체하십시오.
{정책} 권한 부여 요청에서 지정한 사용자 흐름입니다. 사용자가 b2c_1_sign_in 사용자 흐름으로 로그인한 경우, 로그아웃 요청 시 b2c_1_sign_in을(를) 지정합니다.
id_token_hint (아이디 토큰 힌트) 아니오 클라이언트에서 최종 사용자의 현재 인증된 세션에 대한 힌트로 로그아웃 엔드포인트에 전달하기 위해 이전에 발급한 ID 토큰입니다. Azure AD B2C 애플리케이션 설정에서 id_token_hint이(가) 등록된 회신 URL인지 post_logout_redirect_uri이(가) 확인합니다. 자세한 내용은 로그아웃 리디렉션 보안을 참조하세요.
클라이언트_아이디 아니요* Azure Portal에서 애플리케이션에 할당한 애플리케이션 ID입니다.

* 이는 격리 SSO 구성을 사용하고 Application 로그아웃 요청에서 ID 토큰 필요 를 으로 설정하는 No경우에 필요합니다.
로그아웃 후 리디렉션 URI 아니오 로그아웃에 성공한 후 사용자가 리디렉션해야 하는 URL입니다. 포함되지 않은 경우 Azure AD B2C는 사용자에게 일반 메시지를 표시합니다. id_token_hint를 제공하지 않는다면, Azure AD B2C 애플리케이션 설정에서 이 URL을 회신 URL로 등록하면 안 됩니다.
아니오 권한 부여 요청에 매개 변수를 state 포함하는 경우 권한 부여 서버는 에 대한 응답 post_logout_redirect_uri에서 동일한 값을 반환합니다. 애플리케이션은 요청 및 응답의 state 값이 동일한지 확인해야 합니다.

로그아웃 요청 시 Azure AD B2C는 Azure AD B2C 쿠키 기반 세션을 무효화하고 페더레이션 ID 공급자로부터 로그아웃을 시도합니다. 자세한 내용은 Single Sign-Out을 참조하세요.

로그아웃 리디렉션 보호

로그아웃 후 사용자는 애플리케이션에 대해 지정한 회신 URL에 관계없이 매개 변수에 post_logout_redirect_uri 지정한 URI로 리디렉션됩니다. 그러나 유효한 id_token_hint 토큰이 전달되고 로그아웃 요청의 ID 토큰 요구 가 설정된 경우 Azure AD B2C는 리디렉션을 수행하기 전에 애플리케이션의 post_logout_redirect_uri 구성된 리디렉션 URI 중 하나와 일치하는 값을 확인합니다. 애플리케이션에 대해 일치하는 회신 URL이 구성되지 않은 경우 오류 메시지가 표시되고 사용자가 리디렉션되지 않습니다.

로그아웃 요청에서 필요한 ID 토큰을 설정하려면 Azure Active Directory B2C에서 세션 동작 구성을 참조하세요.