我们有3个不同的应用程序需要不同的扩展声明集。 申请A-权利要求A1,权利要求A2,权利要求A3 申请B-权利要求B1,权利要求B2,权利要求B3
我们在TrustFrameworkExtensions中定义了六个声明,更新了各种TechnicalProfiles以从用户那里获取输入,并将其写入目录。
为了支持各个应用程序的需求,我们创建了2个RP文件,每个应用程序一个,并定义了特定于应用程序的用户旅程。
6个声明都出现在两个应用中,我们希望通过App限制声明。
尝试将TrustFrameworkExtensions中的所有内容复制到RP文件中,RP不会加载并抛出错误,如下所示
无法上传政策。原因:验证失败:在租户“XXXXXXXXX.onmicrosoft.com”的策略“B2C_1A_1182017SIGNUP_SIGNIN”中发现3个验证错误。
在租户“XXXXXXXXX.onmicrosoft.com”的政策“B2C_1A_1182017signup_signin”中,在ID为“AAD-UserWriteUsingAlternativeSecurityId”的TechnicalProfile中找不到具有键“ApplicationObjectId”的必需元数据项。
在租户“XXXXXXXXX.onmicrosoft.com”的政策“B2C_1A_1182017signup_signin”中,在ID为“AAD-UserWriteUsingLogonEmail”的TechnicalProfile中找不到具有键“ApplicationObjectId”的必需元数据项。
在租户“XXXXXXXXX.onmicrosoft.com”的政策“B2C_1A_1182017signup_signin”中,在ID为“AAD-UserWriteProfileUsingObjectId”的TechnicalProfile中找不到具有键“ApplicationObjectId”的必需元数据项。
感谢建议和指导,以支持具有不同声明的多个应用。
答案 0 :(得分:0)
使用<RelyingParty><TechnicalProfile><OutputClaims>
来控制返回的声明。
<RelyingParty>
<DefaultUserJourney ReferenceId="SignInAppA" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="ClaimA1" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
和
<RelyingParty>
<DefaultUserJourney ReferenceId="SignInAppB" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="ClaimB1" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
答案 1 :(得分:0)
要在自定义策略中使用扩展属性,您需要在文件中添加一些配置,其中包含为每个B2C租户自动创建并在Portal中注册的b2c-extensions-app。
在您的情况下,您似乎错过了ApplicationObjectID
技术ClientId
键部分中的Metadata
和AAD-Common
个b2c-extensions-app轮廓。
“创建自定义属性”文档的Next Steps部分介绍了如何执行此配置。