首页 > 解决方案 > 用于非自断言技术配置文件的 Azure AD B2C 验证配置文件

问题描述

从测试来看,只有在添加到 SelfAssserted Technical Profiles 时才使用 Validation Technical Profiles

例如以下:

    <TechnicalProfile Id="ExternalIDP">
      <DisplayName>Some External IdP</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <Metadata>
        <!-- ... -->
      </Metadata>
      <OutputClaims>
        <!-- ... -->
      </OutputClaims>
      <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="FETCH-MORE-CLAIMS" />
      </ValidationTechnicalProfiles>
    </TechnicalProfile>

FETCH-MORE-CLAIMS在向外部身份提供者进行身份验证后似乎没有调用配置文件。

这是否正确,如果是这样,是否有另一种方法可以在调用特定技术配置文件时始终强制调用第二个技术配置文件?

标签: azure-ad-b2c

解决方案


一种可能的方法是设置一个指示已完成的输出声明,然后在该声明的条件下进行编排步骤,然后将您的 TP 作为声明交换运行。

因此,输出声明如下:

<OutputClaim ClaimTypeReferenceId="idp" DefaultValue="ThisIdp" AlwaysUseDefaultValue="true" />

如果尚未定义,则需要定义该声明,或者您可以使用已有的另一个声明。

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> 
      <Value>idp</Value>
      <Value>ThisIdp</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FetchMoreClaimsExchange" TechnicalProfileReferenceId="FETCH-MORE-CLAIMS" />
  </ClaimsExchanges>
</OrchestrationStep>

如果 idp != ThisIdp 则跳过此编排步骤,因此仅在使用您的外部 idp 时才会运行。


推荐阅读