Azure Active Directory B2C 사용자 지정 정책에 Openid connect Connect 기술 프로필 정의Define an OpenID Connect technical profile in an Azure Active Directory B2C custom policy

참고

Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 해결하기 위해 설계되었습니다.In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. 대부분의 시나리오에서 기본 제공 사용자 흐름을 사용하는 것이 좋습니다.For most scenarios, we recommend that you use built-in user flows.

Azure Active Directory B2C (Azure AD B2C)는 Openid connect Connect 프로토콜 id 공급자에 대 한 지원을 제공 합니다.Azure Active Directory B2C (Azure AD B2C) provides support for the OpenID Connect protocol identity provider. OpenID Connect 1.0은 OAuth 2.0을 토대로 ID 계층을 정의하고 최신 인증 프로토콜을 나타냅니다.OpenID Connect 1.0 defines an identity layer on top of OAuth 2.0 and represents the state of the art in modern authentication protocols. Openid connect Connect 기술 프로필을 사용 하 여 Azure AD와 같은 Openid connect Connect 기반 id 공급자와 페더레이션 할 수 있습니다.With an OpenID Connect technical profile, you can federate with an OpenID Connect based identity provider, such as Azure AD. Id 공급자와의 페더레이션을 통해 사용자는 기존 소셜 또는 엔터프라이즈 id로 로그인 할 수 있습니다.Federating with an identity provider allows users to sign in with their existing social or enterprise identities.

프로토콜Protocol

Protocol 요소의 Name 특성은 OpenIdConnect로 설정해야 합니다.The Name attribute of the Protocol element needs to be set to OpenIdConnect. 예를 들어 MSA-OIDC 기술 프로필의 프로토콜은 OpenIdConnect입니다.For example, the protocol for the MSA-OIDC technical profile is OpenIdConnect:

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

입력 클레임Input claims

InputClaimsInputClaimsTransformations 요소는 필요하지 않습니다.The InputClaims and InputClaimsTransformations elements are not required. 그러나 ID 공급자에게 추가 매개 변수를 보내는 것이 좋습니다.But you may want to send additional parameters to your identity provider. 다음 예제는 값이 contoso.comdomain_hint 쿼리 문자열 매개 변수를 권한 부여 요청에 추가합니다.The following example adds the domain_hint query string parameter with the value of contoso.com to the authorization request.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

출력 클레임Output claims

Outputclaims 요소는 openid connect Connect id 공급자가 반환 하는 클레임 목록을 포함 합니다.The OutputClaims element contains a list of claims returned by the OpenID Connect identity provider. 정책에 정의된 클레임 이름을 ID 공급자에 정의된 이름에 매핑해야 할 수도 있습니다.You may need to map the name of the claim defined in your policy to the name defined in the identity provider. DefaultValue 특성만 설정하면, ID 공급자가 반환하지 않은 클레임도 포함할 수 있습니다.You can also include claims that aren't returned by the identity provider, as long as you set the DefaultValue attribute.

OutputClaimsTransformations 요소는 출력 클레임을 수정하거나 새 출력 클레임을 생성하는 데 사용되는 OutputClaimsTransformation 요소 컬렉션을 포함할 수 있습니다.The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

다음 예제는 Microsoft 계정 ID 공급자가 반환한 클레임을 보여 줍니다.The following example shows the claims returned by the Microsoft Account identity provider:

  • IssuerUserId 클레임에 매핑되는 하위 클레임입니다.The sub claim that is mapped to the issuerUserId claim.
  • displayName 클레임에 매핑된 name 클레임입니다.The name claim that is mapped to the displayName claim.
  • 이름 매핑이 없는 email 입니다.The email without name mapping.

기술 프로필은 ID 공급자가 반환하지 않은 클레임도 반환합니다.The technical profile also returns claims that aren't returned by the identity provider:

  • ID 공급자의 이름을 포함하는 identityProvider 클레임입니다.The identityProvider claim that contains the name of the identity provider.
  • 기본값이 socialIdpAuthenticationauthenticationSource 클레임입니다.The authenticationSource claim with a default value of socialIdpAuthentication.
<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>

메타데이터Metadata

attributeAttribute 필수Required 설명Description
client_idclient_id Yes ID 공급자의 애플리케이션 식별자입니다.The application identifier of the identity provider.
IdTokenAudienceIdTokenAudience 아니요No id_token의 대상 그룹입니다.The audience of the id_token. 지정 된 경우 aud id 공급자가 반환 하는 토큰의 클레임이 IdTokenAudience 메타 데이터에 지정 된 것과 동일한 지 여부를 Azure AD B2C 확인 합니다.If specified, Azure AD B2C checks whether the aud claim in a token returned by the identity provider is equal to the one specified in the IdTokenAudience metadata.
METADATAMETADATA Yes Openid connect 잘 알려진 구성 끝점이 라고도 하는 Openid connect Connect id 공급자 구성 문서를 가리키는 URL입니다.A URL that points to an OpenID Connect identity provider configuration document, which is also known as OpenID well-known configuration endpoint. URL은 {tenant} 테 넌 트 이름으로 대체 되는 식을 포함할 수 있습니다.The URL can contain the {tenant} expression, which is replaced with the tenant name.
authorization_endpointauthorization_endpoint 아니요No Openid connect Connect id 공급자 구성 권한 부여 끝점을 가리키는 URL입니다.A URL that points to an OpenID Connect identity provider configuration authorization endpoint. Authorization_endpoint 메타 데이터 값은 authorization_endpoint 잘 알려진 openid connect 구성 끝점의 지정 된 보다 우선적으로 적용 됩니다.The value of authorization_endpoint metadata takes precedence over the authorization_endpoint specified in the OpenID well-known configuration endpoint. URL은 {tenant} 테 넌 트 이름으로 대체 되는 식을 포함할 수 있습니다.The URL can contain the {tenant} expression, which is replaced with the tenant name.
end_session_endpointend_session_endpoint 아니요No End session 끝점의 URL입니다.The URL of the end session endpoint. Authorization_endpoint 메타 데이터 값은 end_session_endpoint 잘 알려진 openid connect 구성 끝점의 지정 된 보다 우선적으로 적용 됩니다.The value of authorization_endpoint metadata takes precedence over the end_session_endpoint specified in the OpenID well-known configuration endpoint.
발급자issuer 아니요No Openid connect Connect id 공급자의 고유 식별자입니다.The unique identifier of an OpenID Connect identity provider. 발급자 메타 데이터의 값이 issuer openid connect 잘 알려진 구성 끝점의 지정 된 보다 우선 적용 됩니다.The value of issuer metadata takes precedence over the issuer specified in the OpenID well-known configuration endpoint. 지정 된 경우 iss id 공급자에서 반환 된 토큰의 클레임이 발급자 메타 데이터에 지정 된 클레임과 동일한 지 여부를 Azure AD B2C 확인 합니다.If specified, Azure AD B2C checks whether the iss claim in a token returned by the identity provider is equal to the one specified in the issuer metadata.
ProviderNameProviderName 아니요No ID 공급자의 이름입니다.The name of the identity provider.
response_typesresponse_types 아니요No OpenID Connect Core 1.0 사양에 따른 응답 유형입니다.The response type according to the OpenID Connect Core 1.0 specification. 가능한 값은 id_token, code 또는 token입니다.Possible values: id_token, code, or token.
response_moderesponse_mode 아니요No ID 공급자가 결과를 다시 Azure AD B2C에 보내는 데 사용하는 방법입니다.The method that the identity provider uses to send the result back to Azure AD B2C. 가능한 값은 query, form_post(기본값) 또는 fragment입니다.Possible values: query, form_post (default), or fragment.
scopescope 아니요No Openid connect Connect Core 1.0 사양에 따라 정의 된 요청의 범위입니다.The scope of the request that is defined according to the OpenID Connect Core 1.0 specification. 예를 들어 openid, profileemail입니다.Such as openid, profile, and email.
HttpBindingHttpBinding 아니요No 액세스 토큰 및 클레임 토큰 엔드포인트에 필요한 HTTP 바인딩입니다.The expected HTTP binding to the access token and claims token endpoints. 가능한 값은 GET 또는 POST입니다.Possible values: GET or POST.
ValidTokenIssuerPrefixesValidTokenIssuerPrefixes 아니요No Azure Active Directory와 같은 다중 테넌트 ID 공급자를 사용할 때 각 테넌트에 로그인하는 데 사용할 수 있는 키입니다.A key that can be used to sign in to each of the tenants when using a multi-tenant identity provider such as Azure Active Directory.
UsePolicyInRedirectUriUsePolicyInRedirectUri 아니요No 리디렉션 URI를 구성할 때 정책을 사용할지 여부를 나타냅니다.Indicates whether to use a policy when constructing the redirect URI. ID 공급자에서 애플리케이션을 구성할 때 리디렉션 URI를 지정해야 합니다.When you configure your application in the identity provider, you need to specify the redirect URI. 리디렉션 URI는 Azure AD B2C을 가리킵니다 https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp .The redirect URI points to Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. true를 지정하는 경우 사용하는 각 정책에 대해 리디렉션 URI를 추가해야 합니다.If you specify true, you need to add a redirect URI for each policy you use. 예를 들어 https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp을 참조하십시오.For example: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xxMarkAsFailureOnStatusCode5xx 아니요No HTTP 상태 코드가 5xx 범위에 있는 경우 외부 서비스에 대한 요청을 실패로 표시할지 여부를 나타냅니다.Indicates whether a request to an external service should be marked as a failure if the Http status code is in the 5xx range. 기본값은 false입니다.The default is false.
DiscoverMetadataByTokenIssuerDiscoverMetadataByTokenIssuer 아니요No JWT 토큰의 발급자를 사용하여 OIDC 메타데이터를 검색할지 여부를 나타냅니다.Indicates whether the OIDC metadata should be discovered by using the issuer in the JWT token.
IncludeClaimResolvingInClaimsHandlingIncludeClaimResolvingInClaimsHandling 아니요No 입력 및 출력 클레임의 경우 클레임 확인 이 기술 프로필에 포함 되는지 여부를 지정 합니다.For input and output claims, specifies whether claims resolution is included in the technical profile. 가능한 값은 true 또는 false(기본값)입니다.Possible values: true, or false (default). 기술 프로필에서 클레임 해결 프로그램을 사용 하려면이를로 설정 true 합니다.If you want to use a claims resolver in the technical profile, set this to true.
token_endpoint_auth_methodtoken_endpoint_auth_method 아니요No Azure AD B2C 인증 헤더를 토큰 끝점으로 전송 하는 방법을 지정 합니다.Specifies how Azure AD B2C sends the authentication header to the token endpoint. 가능한 값: client_secret_post (기본값) 및 client_secret_basic (공개 미리 보기).Possible values: client_secret_post (default), and client_secret_basic (public preview). 자세한 내용은 Openid connect Connect 클라이언트 인증 섹션을 참조 하세요.For more information, see OpenID Connect client authentication section.
token_signing_algorithmtoken_signing_algorithm 아니요No Token_endpoint_auth_method 메타 데이터가로 설정 된 경우 클라이언트 어설션에 사용 되는 서명 알고리즘입니다 private_key_jwt .The signing algorithm used for client assertions when the token_endpoint_auth_method metadata is set to private_key_jwt. 가능한 값: RS256 (기본값)Possible values: RS256 (default).
SingleLogoutEnabledSingleLogoutEnabled 아니요No 로그인 중에 기술 프로필에서 페더레이션 id 공급자에 대 한 로그 아웃을 시도 하는지 여부를 나타냅니다.Indicates whether during sign-in the technical profile attempts to sign out from federated identity providers. 자세한 내용은 Azure AD B2C 세션 로그 아웃을 참조 하세요. 가능한 값은 true (기본값) 또는 false 입니다.For more information, see Azure AD B2C session sign-out. Possible values: true (default), or false.
ReadBodyClaimsOnIdpRedirectReadBodyClaimsOnIdpRedirect 아니요No trueId 공급자 리디렉션의 응답 본문에서 클레임을 읽으려면로 설정 합니다.Set to true to read claims from response body on identity provider redirect. 이 메타 데이터는 클레임을 응답 페이로드에 반환 하는 APPLE ID와 함께 사용 됩니다.This metadata is used with Apple ID, where claims return in the response payload.
<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 요소UI elements

다음 설정을 사용 하 여 오류 발생 시 표시 되는 오류 메시지를 구성할 수 있습니다.The following settings can be used to configure the error message displayed upon failure. 메타 데이터는 Openid connect Connect 기술 프로필에서 구성 해야 합니다.The metadata should be configured in the OpenID Connect technical profile. 오류 메시지는 지역화될 수 있습니다.The error messages can be localized.

특성Attribute 필수Required 설명Description
UserMessageIfClaimsPrincipalDoesNotExistUserMessageIfClaimsPrincipalDoesNotExist 아니요No 제공 된 사용자 이름을 가진 계정이 디렉터리에 없는 경우 사용자에 게 표시할 메시지입니다.The message to display to the user if an account with the provided username not found in the directory.
UserMessageIfInvalidPasswordUserMessageIfInvalidPassword 아니요No 암호가 잘못 된 경우 사용자에 게 표시할 메시지입니다.The message to display to the user if the password is incorrect.
UserMessageIfOldPasswordUsedUserMessageIfOldPasswordUsed 아니요No 이전 암호를 사용 하는 경우 사용자에 게 표시할 메시지입니다.The message to display to the user if an old password used.

암호화 키Cryptographic keys

CryptographicKeys 요소에는 다음 특성이 포함됩니다.The CryptographicKeys element contains the following attribute:

특성Attribute 필수Required 설명Description
client_secretclient_secret Yes ID 공급자 애플리케이션의 클라이언트 암호입니다.The client secret of the identity provider application. 이 암호화 키는 response_types 메타 데이터가로 설정 되 codetoken_endpoint_auth_method 이 또는로 설정 된 경우에만 필요 client_secret_post client_secret_basic 합니다.This cryptographic key is required only if the response_types metadata is set to code and token_endpoint_auth_method is set to client_secret_post or client_secret_basic. 이 경우 Azure AD B2C는 액세스 토큰에 대한 인증 코드를 교환하는 다른 호출을 수행합니다.In this case, Azure AD B2C makes another call to exchange the authorization code for an access token. 메타데이터가 id_token으로 설정된 경우 암호화 키를 생략할 수 있습니다.If the metadata is set to id_token you can omit the cryptographic key.
assertion_signing_keyassertion_signing_key Yes 클라이언트 어설션에 서명 하는 데 사용 되는 RSA 개인 키입니다.The RSA private key which will be used to sign the client assertion. 이 암호화 키는 token_endpoint_auth_method 메타 데이터가로 설정 된 경우에만 필요 private_key_jwt 합니다.This cryptographic key is required only if the token_endpoint_auth_method metadata is set to private_key_jwt.

리디렉션 URIRedirect Uri

ID 공급자의 리디렉션 URI를 구성할 때 https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp를 입력합니다.When you configure the redirect URI of your identity provider, enter https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. {your-tenant-name} 테 넌 트의 이름으로 바꾸어야 합니다.Make sure to replace {your-tenant-name} with your tenant's name. 리디렉션 URI는 모두 소문자여야 합니다.The redirect URI needs to be in all lowercase.

예제:Examples: