Azure Active Directory B2C 사용자 지정 정책에서 OAuth2 사용자 지정 오류 기술 프로필 정의
이 문서에서는 Azure AD B2C(Azure Active Directory B2C)를 사용하여 OAuth2 사용자 지정 오류를 처리하는 방법을 설명합니다. 정책 내에서 논리가 잘못된 경우 이 기술 프로필을 사용합니다. 기술 프로필은 OAuth2 또는 OpenId Connect 신뢰 당사자 애플리케이션에 오류를 반환합니다. OAuth2 사용자 지정 오류 기술 프로필의 실시간 데모를 체크 아웃합니다.
사용자 지정 OAuth2 오류 메시지를 처리하려면:
- OAuth2 오류 기술 프로필을 정의합니다.
- 오류 코드 및 오류 메시지 클레임을 설정합니다.
- 사용자 경험에서 OAuth2 오류 기술 프로필을 호출합니다.
OAuth2 오류
오류는 다음 데이터와 함께 반환됩니다.
- error -
access_denied
- error_description -
AAD_Custom_<errorCode>: <errorMessage>
규칙을 사용하는 오류 메시지입니다. - 상관 관계 ID - Azure AD B2C 상관 관계 ID입니다.
- Timestamp - 오류의 타임스탬프입니다.
다음 예제에서는 앱에 반환 https://jwt.ms 되는 사용자 지정 오류 메시지를 보여 줍니다.
https://jwt.ms/#error=access_denied&error_description=AAD_Custom_1234%3a+My+custom+error+message%0d%0aCorrelation+ID%3a+233bf9bd-747a-4800-9062-6236f3f69a47%0d%0aTimestamp%3a+2021-03-25+14%3a01%3a23Z%0d%0a
프로토콜
Protocol 요소의 Name 특성을 .로 설정OAuth2
해야 합니다. OutputTokenFormat 요소를 OAuth2Error
.로 설정합니다.
다음 예제에서는 다음에 대한 기술 프로필을 보여줍니다.ReturnOAuth2Error
<!--
<ClaimsProviders> -->
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ReturnOAuth2Error">
<DisplayName>Return OAuth2 error</DisplayName>
<Protocol Name="OAuth2" />
<OutputTokenFormat>OAuth2Error</OutputTokenFormat>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="errorCode" />
<InputClaim ClaimTypeReferenceId="errorMessage" />
</InputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<!--
</ClaimsProviders> -->
오류 코드 및 오류 메시지의 사용자 지정 값을 생성하는 클레임 변환 정의
다음 단계를 사용하여 오류 코드 및 오류 메시지의 사용자 지정 값을 생성합니다.
요소를 찾은
ClaimsTransformations
다음 그 안에 다음 코드를 추가합니다.<!-- <ClaimsTransformations> --> <ClaimsTransformation Id="GenerateErrorCode" TransformationMethod="CreateStringClaim"> <InputParameters> <InputParameter Id="value" DataType="string" Value="Error_001" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="errorCode" TransformationClaimType="createdClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="GenerateErrorMessage" TransformationMethod="CreateStringClaim"> <InputParameters> <InputParameter Id="value" DataType="string" Value="Insert error description." /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="errorMessage" TransformationClaimType="createdClaim" /> </OutputClaims> </ClaimsTransformation> <!-- </ClaimsTransformations> -->
정의하는 OAuth2 기술 전에 기술 프로필 요소에 두 클레임 변환
OutputClaimsTransformations
을 추가합니다.<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
입력 클레임
Inputclaims 요소는 OAuth2 오류를 반환하는 데 필요한 클레임 목록을 포함합니다.
ClaimReferenceId | Required | Description |
---|---|---|
errorCode | 예 | 오류 코드입니다. |
errorMessage | 예 | 오류 메시지입니다. |
암호화 키
CryptographicKeys 요소는 다음 키를 포함합니다.
attribute | 필수 | 설명 |
---|---|---|
issuer_secret | 예 | X509 인증서(RSA 키 집합). B2C_1A_TokenSigningKeyContainer 사용자 지정 정책 시작에서 구성하는 키를 사용합니다. |
기술 프로필 호출
사용자 경험 또는 하위 경험(transfer
유형)에서 OAuth2 오류 기술 프로필을 호출할 수 있습니다. OAuth2 오류 기술 프로필에 대한 참조를 사용하여 오케스트레이션 단계 유형을 SendClaims
로 설정합니다.
사용자 경험 또는 하위 경험에 이미 다른 SendClaims
오케스트레이션 단계가 DefaultCpimIssuerTechnicalProfileReferenceId
있는 경우 특성을 토큰 발급자 기술 프로필로 설정합니다.
다음 예제에서
- 사용자 경험은
SignUpOrSignIn-Custom
토큰 발급자 기술 프로필JwtIssuer
로 설정합니다DefaultCpimIssuerTechnicalProfileReferenceId
. - 여덟 번째 오케스트레이션 단계에서는 해당 오케스트레이션 단계가
errorCode
있는지 확인합니다. 그렇다면 기술 프로필을 호출ReturnOAuth2Error
하여 오류를 반환합니다. - 존재하지 않는 경우
errorCode
아홉 번째 오케스트레이션 단계에서 토큰을 발급합니다.
<UserJourney Id="SignUpOrSignIn-Custom" DefaultCpimIssuerTechnicalProfileReferenceId="JwtIssuer">
<OrchestrationSteps>
...
<OrchestrationStep Order="8" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>errorCode</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
<OrchestrationStep Order="9" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
필요에 따라 사전 조건을 사용하여 OAuth2 오류 기술 프로필을 조작할 수 있습니다. 예를 들어 이메일 클레임이 없는 경우 OAuth2 오류 기술 프로필을 호출하도록 설정할 수 있습니다.
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
다음 단계
UserJourneys에 대해 알아보기