0

我目前正在修改 HRD 政策以满足我们的需求。我有一个声明“domainParameter”,其中包含用户登录的电子邮件域部分。我正在使用 LookupValue 的转换来映射不同的域。我们有多个组将使用我们的策略,其中一些组有多个域,他们的用户可能会注册。所以我们的查找显示如下:

<ClaimTransformation Id="GroupLookup" TransformationMethod="LookupValue">
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="domainParameter" TransformationClaimType="inputParameterId" />
    </InputClaims>
    <InputParameters>
        <InputParameter Id="company1.domain1" DataType="string" Value="company1" />
        <InputParameter Id="company1.domain2" DataType="string" Value="company1" />
        <InputParameter Id="company2.domain1" DataType="string" Value="company2" />
        <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
    </InputParameters>
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="domainGroup" TransformationClaimType="outputClaim" />
    </OutputClaims>
</ClaimsTransformation>

当域是列出的域之一时,这显然很有效,但是我们也希望允许本地帐户注册/登录并将它们分组到一个名为“本地”的组中,尽管名称并不重要。据我所知,如果查找失败,我想不出任何方法将声明分配给特定值。通过更改该参数,我可以在查找时出错,但是让它分配一个值,我认为没有办法这样做。我已经尝试将“domainGroup”上的 DefaultValue 属性作为 InputClaim 和 OutputClaim,但都不起作用。我在 LookupValue 中也没有看到通配符选择器的选项。

有谁知道如何完成这项工作?我已经搜索了几天的文档,还没有找到任何有价值的东西。

4

1 回答 1

1

当查找失败时,您的声明转换的输出为空。不,它不能直接设置为其他值,但可以间接设置:

我在示例中解释了当您的 claimTransform 的输出为空时,我们如何进行布尔比较并且 isKnownCustomer 的最终值为 FALSE。这会将用户发送到本地帐户登录页面。

转换的功能在此处定义

https://docs.microsoft.com/en-us/azure/active-directory-b2c/string-transformations#lookupvalue

该示例详细解释了我如何让它执行您要求的逻辑。“我们还希望允许本地帐户注册/登录……如果查找失败”</p>

https://github.com/azure-ad-b2c/samples/blob/master/policies/home-realm-discovery-modern/readme.md

“用户旅程的第一步是提供一个收集用户电子邮件地址的页面。该页面使用输入验证,以便提供有效的电子邮件。

旅程的下一步运行多个输出声明转换以检查域是否已知。

首先,称为输出声明转换的输出声明转换ParseDomain提取所提供电子邮件地址的电子邮件域名并将其复制到domainParameter声明中。

使用DomainLookup输出声明转换,domainParameter根据已知域名列表查找。如果域名匹配,DomainLookup将输出一个 claim knownDomain= True,否则它将是null.

要返回域是否已知的最终值True或值,调用输出声明转换,它将与(其中包含一个 True 值)进行比较。最后我们得到一个声明,要么是要么。这可以防止在.FalseCheckDomainParameterValueknownDomaindummyTrueisKnownCustomerTrueFalseknownDomain

第 3 步和第 4 步处理域未知的情况,并模拟通过本地帐户登录的步骤。”</p>

于 2020-11-18T01:01:07.220 回答