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 域是否已知的最终 True
或 False
值,调用 CheckDomainParameterValue
输出声明转换,比较 knownDomain
与 dummyTrue
(其中包含一个 True 值)。最后我们得到一个声明 isKnownCustomer
,它是 True
或 False
。这可以防止在 knownDomain
.
的情况下出现空值
第 3 步和第 4 步处理域未知的情况,并模仿通过本地帐户登录的步骤。”
我目前正在修改 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 域是否已知的最终 True
或 False
值,调用 CheckDomainParameterValue
输出声明转换,比较 knownDomain
与 dummyTrue
(其中包含一个 True 值)。最后我们得到一个声明 isKnownCustomer
,它是 True
或 False
。这可以防止在 knownDomain
.
第 3 步和第 4 步处理域未知的情况,并模仿通过本地帐户登录的步骤。”