Azure Active Directory B2C 사용자 지정 정책에서 OpenID Connect 기술 프로필 정의
참고 항목
Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 해결하기 위해 설계되었습니다. 대부분의 시나리오에서 기본 제공 사용자 흐름을 사용하는 것이 좋습니다. 아직 수행하지 않았다면 Active Directory B2C에서 사용자 지정 정책 시작하기에서 사용자 지정 정책 스타터 팩에 대해 알아봅니다.
Azure AD B2C(Azure Active Directory B2C)는 OpenID Connect 프로토콜 ID 공급자를 지원합니다. OpenID Connect 1.0은 OAuth 2.0 위에 있는 ID 계층을 정의하고 최신 인증 프로토콜의 최신 상태를 나타냅니다. OpenID Connect 기술 프로필을 사용하면 Microsoft Entra ID와 같은 OpenID Connect 기반 ID 공급자와 페더레이션할 수 있습니다. ID 공급자와의 페더레이션을 통해 사용자는 기존 소셜 또는 엔터프라이즈 ID로 로그인할 수 있습니다.
프로토콜
Protocol 요소의 Name 특성을 .로 설정OpenIdConnect
해야 합니다. 예를 들어 MSA-OIDC 기술 프로필에 대한 프로토콜은 다음과 같습니다OpenIdConnect
.
<TechnicalProfile Id="MSA-OIDC">
<DisplayName>Microsoft Account</DisplayName>
<Protocol Name="OpenIdConnect" />
...
입력 클레임
InputClaims 및 InputClaimsTransformations 요소는 필요하지 않습니다. 그러나 ID 공급자에게 추가 매개 변수를 보낼 수 있습니다. 다음 예제에서는 권한 부여 요청에 값 contoso.com
이 있는 domain_hint 쿼리 문자열 매개 변수를 추가합니다.
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>
출력 클레임
OutputClaims 요소에는 OpenID Connect ID 공급자가 반환한 클레임 목록이 포함되어 있습니다. 정책에 정의된 클레임의 이름을 ID 공급자에 정의된 이름에 매핑해야 할 수 있습니다. 특성을 설정하는 DefaultValue
한 ID 공급자가 반환하지 않는 클레임을 포함할 수도 있습니다.
OutputClaimsTransformations 요소에는 출력 클레임을 수정하거나 새 클레임을 생성하는 데 사용되는 OutputClaimsTransformation 요소의 컬렉션이 포함될 수 있습니다.
다음 예제에서는 Microsoft 계정 ID 공급자가 반환한 클레임을 보여줍니다.
- issuerUserId 클레임에 매핑된 sub 클레임입니다.
- displayName 클레임에 매핑되는 이름 클레임입니다.
- 이름 매핑이 없는 email입니다.
기술 프로필은 ID 공급자가 반환하지 않은 클레임도 반환합니다.
- ID 공급자의 이름을 포함하는 identityProvider 클레임입니다.
- 기본값이 socialIdpAuthentication인 authenticationSource 클레임입니다.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
메타데이터
attribute | 필수 | 설명 |
---|---|---|
client_id | 예 | ID 공급자의 애플리케이션 식별자입니다. |
IdTokenAudience | 아니요 | id_token의 대상 그룹입니다. 지정된 경우 Azure AD B2C는 ID 공급자가 반환한 토큰의 클레임이 IdTokenAudience 메타데이터에 지정된 클레임과 같은지 확인 aud 합니다. |
메타데이터 | 예 | OpenID의 잘 알려진 구성 엔드포인트라고도 하는 OpenID Connect ID 공급자 구성 문서를 가리키는 URL입니다. URL은 테넌트 이름으로 대체되는 {tenant} 식을 포함할 수 있습니다. |
authorization_endpoint | 아니요 | OpenID Connect ID 공급자 구성 권한 부여 엔드포인트를 가리키는 URL입니다. authorization_endpoint 메타데이터 값은 OpenID 잘 알려진 구성 엔드포인트에 지정된 authorization_endpoint 보다 우선적으로 적용됩니다. URL은 테넌트 이름으로 대체되는 {tenant} 식을 포함할 수 있습니다. |
end_session_endpoint | 아니요 | 끝 세션 엔드포인트의 URL입니다. end_session_endpoint 메타데이터 값은 OpenID 잘 알려진 구성 엔드포인트에 지정된 end_session_endpoint 보다 우선적으로 적용됩니다. |
issuer | 아니요 | OpenID Connect ID 공급자의 고유 식별자입니다. 발급자 메타데이터 값이 OpenID 잘 알려진 구성 엔드포인트에 지정된 값보다 issuer 우선합니다. 지정된 경우 Azure AD B2C는 ID 공급자에서 반환된 토큰의 iss 클레임이 발급자 메타데이터에 지정된 토큰과 같은지 확인합니다. |
ProviderName | 아니요 | ID 공급자의 이름입니다. |
response_types | 아니요 | OpenID Connect Core 1.0 사양에 따른 응답 유형입니다. 가능한 값은 id_token , code 또는 token 입니다. |
response_mode | 아니요 | ID 공급자가 결과를 Azure AD B2C로 다시 보내는 데 사용하는 메서드입니다. 가능한 값: query , form_post (기본값) 또는 fragment . |
scope | 아니요 | OpenID Connect Core 1.0 사양에 따라 정의된 요청의 범위입니다. 예: openid , profile 및 email . |
HttpBinding | 아니요 | 액세스 토큰 및 클레임 토큰 엔드포인트에 필요한 HTTP 바인딩입니다. 가능한 값은 GET 또는 POST 입니다. |
ValidTokenIssuerPrefixes | 아니요 | Microsoft Entra ID와 같은 다중 테넌트 ID 공급자를 사용할 때 각 테넌트에 로그인하는 데 사용할 수 있는 키입니다. |
UsePolicyInRedirectUri | 아니요 | 리디렉션 URI를 구성할 때 정책을 사용할지 여부를 나타냅니다. ID 공급자에서 애플리케이션을 구성할 때 리디렉션 URI를 지정해야 합니다. 리디렉션 URI는 Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp 를 가리킵니다. 지정 true 하는 경우 사용하는 각 정책에 대한 리디렉션 URI를 추가해야 합니다. 예: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp |
MarkAsFailureOnStatusCode5xx | 아니요 | Http 상태 코드가 5xx 범위에 있는 경우 외부 서비스에 대한 요청을 오류로 표시해야 하는지 여부를 나타냅니다. 기본값은 false 입니다. |
DiscoverMetadataByTokenIssuer | 아니요 | JWT 토큰에 발급자를 사용하여 OIDC 메타데이터를 검색해야 하는지 여부를 나타냅니다. 발급자를 기반으로 메타데이터 엔드포인트 URL을 빌드해야 하는 경우 이를 true 로 설정합니다. |
IncludeClaimResolvingInClaimsHandling | 아니요 | 입력 및 출력 클레임의 경우 기술 프로필에 클레임 해결이 포함되는지 여부를 지정합니다. 가능한 값: true 또는 false (기본값) 기술 프로필에서 클레임 해결 프로그램을 사용하려면 이를 true 로 설정합니다. |
token_endpoint_auth_method | 아니요 | Azure AD B2C가 인증 헤더를 토큰 엔드포인트로 보내는 방법을 지정합니다. 가능한 값: client_secret_post (기본값) 및 client_secret_basic , private_key_jwt . 자세한 내용은 OpenID Connect 클라이언트 인증 섹션을 참조 하세요. |
token_signing_algorithm | 아니요 | 로 설정된 경우 token_endpoint_auth_method 사용할 서명 알고리즘을 지정합니다 private_key_jwt . 가능한 값은 RS256 (기본값) 또는 RS512 입니다. |
SingleLogoutEnabled | 아니요 | 로그인하는 동안 기술 프로필이 페더레이션 ID 공급자로부터 로그아웃을 시도하는지 여부를 나타냅니다. 자세한 내용은 Azure AD B2C 세션 로그 아웃을 참조하세요. 가능한 값은 true (기본값) 또는 false 입니다. |
ReadBodyClaimsOnIdpRedirect | 아니요 | ID 공급자 리디렉션의 응답 본문에서 클레임을 읽으려면 true 로 설정합니다. 이 메타데이터는 Apple ID와 함께 사용되며, 여기서 클레임은 응답 페이로드에 반환됩니다. |
<Metadata>
<Item Key="ProviderName">https://login.live.com</Item>
<Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="scope">openid profile email</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>
UI 요소
다음 설정을 사용하여 오류 발생 시 표시되는 오류 메시지를 구성할 수 있습니다. 메타데이터는 OpenID Connect 기술 프로필에서 구성해야 합니다. 오류 메시지를 지역화할 수 있습니다.
attribute | 필수 | 설명 |
---|---|---|
UserMessageIfClaimsPrincipalDoesNotExist | 아니요 | 제공된 사용자 이름을 가진 계정이 디렉터리에 없는 경우 사용자에게 표시할 메시지입니다. |
UserMessageIfInvalidPassword | 아니요 | 암호가 올바르지 않으면 사용자에게 표시할 메시지입니다. |
UserMessageIfOldPasswordUsed | 아니요 | 이전 암호가 사용된 경우 사용자에게 표시할 메시지입니다. |
암호화 키
CryptographicKeys 요소에는 다음 특성이 포함됩니다.
attribute | 필수 | 설명 |
---|---|---|
client_secret | 예 | ID 공급자 애플리케이션의 클라이언트 암호입니다. 이 암호화 키는 response_types 메타데이터가 code 로 설정되고 token_endpoint_auth_method가 client_secret_post 또는 client_secret_basic 으로 설정된 경우에만 필요합니다. 이 경우 Azure AD B2C는 액세스 토큰에 대한 권한 부여 코드를 교환하기 위해 다른 호출을 수행합니다. 메타데이터가 id_token 으로 설정된 경우 암호화 키를 생략할 수 있습니다. |
assertion_signing_key | 예 | 클라이언트 어설션에 서명하는 데 사용되는 RSA 프라이빗 키입니다. 이 암호화 키는 token_endpoint_auth_method 메타데이터가 로 설정된 private_key_jwt 경우에만 필요합니다. |
리디렉션 URI
ID 공급자의 리디렉션 URI를 구성할 때 https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp
를 입력합니다. 테넌트의 이름으로 바꾸어 {your-tenant-name}
야 합니다. 리디렉션 URI는 모두 소문자여야 합니다.
예: