在Azure AD B2C中限制应用程序声明

时间:2017-11-10 20:25:01

标签: azure-ad-b2c

我们有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”的必需元数据项。

感谢建议和指导,以支持具有不同声明的多个应用。

2 个答案:

答案 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键部分中的MetadataAAD-Common个b2c-extensions-app轮廓。

“创建自定义属性”文档的Next Steps部分介绍了如何执行此配置。