重写自定义B2C策略中的集合元素时的MergeBehavior

时间:2018-06-13 19:04:20

标签: azure-ad-b2c

我正在尝试构建我的基础& ext政策,以便基数保持相当静态。为了做到这一点,我在推销政策中压倒了索赔等 - 效果很好。但是,在尝试覆盖验证技术配置文件时,似乎新项目正在集合的开头添加,而不是像我预期的那样添加。

所以,如果我有这个:

base.xml

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail-NoVerify">
  <DisplayName>Email signup</DisplayName>
     … <!-- stuff removed for brevity -->
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

和这个

ext.xml

 <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail-NoVerify">
   <ValidationTechnicalProfiles>
     <ValidationTechnicalProfile ReferenceId="API-UpdateUser" />
     <ValidationTechnicalProfile ReferenceId="API-GetUser" />
   </ValidationTechnicalProfiles>
 </TechnicalProfile>

按照

的顺序执行
  1. API-UpdateUser两个
  2. API-的getUser
  3. AAD-UserWriteUsingLogonEmail
  4. 无论如何都要控制这个顺序,因为我需要在API内容执行之前创建用户?即按顺序执行3,1,2

2 个答案:

答案 0 :(得分:0)

您需要按照扩展策略中的正确顺序覆盖所有它们。例如,如果您的基本策略具有以下验证技术资料AAD-UserWriteUsingLogonEmail

在扩展策略中,您以正确的顺序再次添加AAD-UserWriteUsingLogonEmail:

  1. API-UpdateUser
  2. API-GetUser
  3. AAD-UserWriteUsingLogonEmail

答案 1 :(得分:0)

据我了解,如果覆盖添加具有相同元素名称和ID的元素,它将替换基本策略中的该元素。

因此,如果扩展策略包含:

````

df.clo2=df.groupby('col1').clo2.transform('first')
df
Out[1024]: 
  col1  clo2
0    A     1
1    A     1
2    B     3
3    B     3

````

然后,“ AAD-UserWriteUsingLogonEmail”将不会被调用两次,它将被调用一次,作为第三个验证配置文件,因为referenceId =“ AAD-UserWriteUsingLogonEmail”会覆盖基本策略文件中该元素的声明。 / p>

文档对此不太清楚,我找到的最近的文档在https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/blob/master/Documentation/Features%20part%206.md中,其内容为:

  

子政策和父政策中的相同元素表示子   政策覆盖了父政策中的该元素

该文档没有弄清楚“相同元素”是什么意思,在我看来,它是相同的XPath和相同的ID(ID是该元素的唯一ID的任何属性)。