Azure Active Directory B2C カスタム ポリシーで OAuth2 カスタム エラーの技術プロファイルを定義する
この記事では、Azure Active Directory B2C (Azure AD B2C) で OAuth2 カスタム エラーを処理する方法について説明します。 ポリシーで何らかのロジックに問題がある場合は、この技術プロファイルを使用します。 技術プロファイルによって、OAuth2 または OpenId Connect 証明書利用者アプリケーションにエラーが返されます。 OAuth2カスタム エラー技術プロファイルのライブ デモをご確認ください。
カスタム OAuth2 エラー メッセージを処理するには:
- Auth2 エラーの技術プロファイルを定義します。
- エラーコードとエラー メッセージのクレームを設定します。
- ユーザー体験から、OAuth2 エラーの技術プロファイルを呼び出します。
OAuth2 エラー
エラーでは、次のデータが返されます。
- error -
access_denied
- error_description -
AAD_Custom_<errorCode>: <errorMessage>
という規則を使用したエラー メッセージ。 - Correlation 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
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
技術プロファイルの要素に 2 つの要求変換を追加します。<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
入力クレーム
Inputclaims 要素には、OAuth2 エラーを返すために必要なクレームの一覧が含まれています。
ClaimReferenceId | 必須 | Description |
---|---|---|
errorCode | はい | エラー コード。 |
errorMessage | はい | エラー メッセージ。 |
暗号化キー
CryptographicKeys 要素には、次のキーが含まれています。
属性 | 必須 | 説明 |
---|---|---|
issuer_secret | はい | X509 証明書 (RSA キー セット)。 「B2C_1A_TokenSigningKeyContainer 」で構成した B2C_1A_TokenSigningKeyContainer キーを使用します。 |
技術プロファイルを呼び出す
ユーザー体験、または サブ体験 ( transfer
のタイプ)からOAuth2エラー技術プロファイルを呼び出すことができます。 オーケストレーション ステップの種類を SendClaims
に設定し、OAuth2 エラーの技術プロファイルへの参照を設定します。
ユーザー体験またはサブ体験に既に別の SendClaims
オーケストレーション ステップがある場合は、DefaultCpimIssuerTechnicalProfileReferenceId
属性をトークン発行者の技術プロファイルに設定します。
次に例を示します。
- ユーザー体験
SignUpOrSignIn-Custom
は、DefaultCpimIssuerTechnicalProfileReferenceId
をトークン発行者の技術プロファイルに設定しますJwtIssuer
。 - 8 番目のオーケストレーション ステップでは、
errorCode
が存在するかどうかを確認しています。 「はい」の場合は、ReturnOAuth2Error
技術プロファイルを呼び出してエラーを返します。 errorCode
が存在しない場合は、9 番目のオーケストレーション ステップによってトークンが発行されます。
<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 の詳細