Azure AD B2C - LookupValue 回退值

Azure AD B2C - LookupValue fallback value

我目前正在修改 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>

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

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

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

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

此处定义了转换的功能

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

该示例详细说明了我如何按照您要求的逻辑获取它。 “我们还希望允许本地帐户签名 up/in ...如果查找失败”

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

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

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

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

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

为了 return 域是否已知的最终 TrueFalse 值,调用 CheckDomainParameterValue 输出声明转换,比较 knownDomaindummyTrue (其中包含一个 True 值)。最后我们得到一个声明 isKnownCustomer,它是 TrueFalse。这可以防止在 knownDomain.

的情况下出现空值

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