Azure AD B2C-使用比较引发AAD-UserReadUsingEmailAddress错误

时间:2019-04-09 02:27:58

标签: azure-ad-b2c

我的用例是我想在TP AAD-UserReadUsingEmailAddress上引发错误。

我尝试使用“ UserMessageIfClaimsTransformationBooleanValueIsNotEqual”。没用

阅读文档时,该文档必须来自自声明的TP,而AAD-UserReadUsingEmailAddress则不是。

另一种方法是使用“ RaiseErrorIfClaimsPrincipalDoesNotExist”或“ RaiseErrorIfClaimsPrincipalAlreadyExists”之类的东西,如果声明存在或不存在,则会引发错误。

但是,如果声明不等于某个值,我想抛出类似“ RaiseErrorIfBooleanValueIsNotEqual”的错误。该声明将始终存在。

有没有办法做到这一点?

更新

我的用户之旅的第一要素是:

<OrchestrationStep Order="1" Type="ClaimsExchange">                 
 <ClaimsExchanges>
    <ClaimsExchange Id="ReadEmailAddress"  TechnicalProfileReferenceId="AAD-UserReadUsingEmailAddress" />
 </ClaimsExchanges>
</OrchestrationStep>

1 个答案:

答案 0 :(得分:1)

这可以使用the AssertBooleanClaimIsEqualToValue claims transformation来实现。

  1. 声明索赔转换:
<ClaimsTransformation Id="AssertTheClaimIsEqualToTheValue" TransformationMethod="AssertBooleanClaimIsEqualToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="your-claim-id" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="[true|false]" />
  </InputParameters>
</ClaimsTransformation>
  1. AAD-UserReadUsingEmailAddress 技术资料中调用此声明转换:
<TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertTheClaimIsEqualToTheValue" />
  </OutputClaimsTransformations>
</TechnicalProfile>

如果索赔值不等于期望值,那么将引发异常。

调用AAD-UserReadUsingEmailAddress技术概要文件的自声明技术概要文件可以使用 UserMessageIfClaimsTransformationBooleanValueIsNotEqual 显示针对此异常的错误消息。