azure-ad-b2c - 用于非自断言技术配置文件的 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
在向外部身份提供者进行身份验证后似乎没有调用配置文件。
这是否正确,如果是这样,是否有另一种方法可以在调用特定技术配置文件时始终强制调用第二个技术配置文件?
解决方案
一种可能的方法是设置一个指示已完成的输出声明,然后在该声明的条件下进行编排步骤,然后将您的 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 时才会运行。
推荐阅读
- javascript - How to delay "ngondestroy" hook calling while components destroy?
- node.js - binding/bcrypt_lib.node' was compiled against a different Node.js version using NODE_MODULE_VERSION
- php - 执行mysqli语句后如何获取行数?
- java - How can I read odd and even lines for coordinates in Java?
- kotlin - AssertJ:类型推断失败:没有足够的信息来推断 org.assertj.core.api.Assertions.fail 中的参数 T
- laravel - 修补程序和 laravel 的问题
- html - css 文件不可见 - 文件未设置样式
- android - org.json.JSONArray 不能转换为 double[]
- javascript - 使用带有 ReactJs 的钩子的多搜索过滤器
- pyspark - 连接数组pyspark