【问题标题】:ADB2C Custom Policy - validate a claim against a string value always returns trueADB2C 自定义策略 - 验证针对字符串值的声明始终返回 true
【发布时间】:2023-01-25 02:48:53
【问题描述】:

我有一个 id_token_hint,我正在从中读取扩展属性以检查该角色是否为管理员,如果是则不发布(跳过)令牌。

要检查用户是否是管理员,我正在执行以下操作

    <ClaimType Id="isAdmin">
    <DisplayName>Verify if user is Admin User</DisplayName>
    <DataType>boolean</DataType>
    <UserHelpText>Verify if user is Admin UserisAdmin</UserHelpText>
    </ClaimType>

声明转换

    <ClaimsTransformation Id="isAdminUser" TransformationMethod="CompareClaimToValue">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="extension_role" TransformationClaimType="inputClaim1" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="compareTo" DataType="string" Value="Admin" />
      <InputParameter Id="operator" DataType="string" Value="equal" />
      <InputParameter Id="ignoreCase" DataType="string" Value="true" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim" />
    </OutputClaims>
    </ClaimsTransformation>

用户旅程

    <OrchestrationStep Order="5" Type="ClaimsExchange">
      <Preconditions>
         <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
           <Value>isAdminUser</Value>
           <Value>False</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="AdminUserNotAllowed" TechnicalProfileReferenceId="AdminUserNotAllowed" />
      </ClaimsExchanges>
</OrchestrationStep>

问题是此条件对所有用户(以及非管理员)都返回 true。

【问题讨论】:

    标签: azure-active-directory azure-ad-b2c azure-ad-b2c-custom-policy


    【解决方案1】:

    试试this之类的东西。

    这使用 TransformationMethod="CompareClaims",

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多