为什么我的 Azure B2C 自定义策略无法解析 PolicyId?

问题描述 投票:0回答:2

我有自定义策略,我正在尝试使用 TechnicalProfile 中的输出声明到 ValidationTechnicalProfile 中。 OutputClaim 可以有一组值,看起来像:

<OutputClaim ClaimTypeReferenceId="PolicyId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:PolicyId}" />   

   

在 ValidationTechnicalProfile 中,我尝试比较 PolicyId 但未设置和 。如果我尝试将硬编码值设置为默认值,ValidationTechnicalProfile 能够运行验证:

<ValidationTechnicalProfile ReferenceId="SetActivity_BasedOnPolicyId_Yes" ContinueOnError="true">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="**false**">
      <Value>policyId</Value>
      <Value>B2C_1A_SignIn</Value>
      <Action>SkipThisValidationTechnicalProfile</Action>
    </Precondition>                      
  </Preconditions>
</ValidationTechnicalProfile>

...

<ValidationTechnicalProfile ReferenceId="SetActivity_BasedOnPolicyId_Yes" ContinueOnError="true">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="**true**">
      <Value>policyId</Value>
      <Value>B2C_1A_SignIn</Value>
      <Action>SkipThisValidationTechnicalProfile</Action>
    </Precondition>                      
  </Preconditions>
</ValidationTechnicalProfile>

我在这里做错了什么?我只是想针对所使用的策略进行验证(我们很少)。

azure-active-directory azure-ad-b2c azure-ad-b2c-custom-policy
2个回答
0
投票

您设置了吗:

  • IncludeClaimResolvingInClaimsHandling 元数据必须设置为 true。
  • 输入或输出声明属性 AlwaysUseDefaultValue 必须设置为 true。

0
投票

我觉得索赔解决有时会以一种奇怪的顺序发生。尝试将 PolicyId 设置为输入声明,并在其中解析声明,而不是在输出声明中(但仍保留输出声明)

© www.soinside.com 2019 - 2024. All rights reserved.