从测试中看,似乎仅在将验证技术配置文件添加到SelfAssserted技术配置文件中时使用
例如:
<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
个人资料。
这是正确的吗?如果是这样,是否有另一种方法可以在每次调用特定技术资料时始终强制调用第二个技术资料?
答案 0 :(得分:3)
一种可能的方法是设置一个输出声明,该声明指示已完成,然后在该声明上有条件的情况下进行编排步骤,然后将该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时,该编排步骤才会运行。