对于 Azure B2C,有没有办法通过声明发送用户主体名称?
For Azure B2C, is there a way to send the user principal name via claims?
我在将当前登录用户的用户名从 Azure b2c 获取到我的 Blazor Web 应用时遇到了一些问题。本质上,我想创建一个用户名帐户,其中用户名是用户主体名称。我最初使用的是将显示名称作为用户名的电子邮件注册策略。但是,b2c 并不强制显示名称是唯一的,因此存在一个固有的问题。没有返回带有用户名的声明,因此我无法在我的 Blazor 应用程序中密切关注谁已登录或显示他们的用户名。我可以做一些选择,我很好奇哪一个最容易 implement/how 实现它,因为过去几个小时我一直在用这个来解决问题。
- 在创建 b2c 帐户时,采用用户主体名称并将其设为显示名称
- 通过声明发送用户主体名称(不确定如何操作)
- 使用显示名称注册电子邮件,但以某种方式强制执行 b2c 以确保显示名称是唯一的
- 为来自 b2c 的用户提供唯一显示名称的其他方法
提前致谢!
如果您需要任何额外的声明,您需要输入您的 Azure AD BC 租户并从您的 [=] 配置 Application Claims 36=]用户流,在下面的例子中用户流被调用B2C_1_signupsignin:
如您所见,上面的示例列出了所有 other 可用声明,因为圆顶声明 always 返回,作为用户名。
您可以配置用于在 Identity Provider 中登录的声明(模式):
您收到的索赔如下:
但是如您所见,没有任何 userPrincipalName
或 signinNames
。
这是 Azure AD B2C 中的一个已知问题,在用户流清单中包含此声明不起作用。
我找到的唯一解决方案是上传您的自定义策略并添加:
<OutputClaim ClaimTypeReferenceId = "signInName" />
但这仅适用于 本地帐户。
如果您还想为外部(社交)帐户添加登录名,您需要映射它们,例如:
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="upn" />
在此处查看基础资源 XML:
https://github.com/azure-ad-b2c/samples/tree/master/policies/sign-up-with-social-and-local-account
您需要使用自定义策略:https://aka.ms/ief。用户名未 return 包含在用户流令牌中。
使用自定义策略,您可以使用用户名和 return 他们的用户名(signInNames.username 属性,在 Azure 门户中显示为 userPrincipalName)注册用户到令牌中。
您可以使用我的工具 here. And quick deploy the username sample using this page 和 示例文件夹名称 username-signup-or-signin
.
快速部署自定义策略
我在将当前登录用户的用户名从 Azure b2c 获取到我的 Blazor Web 应用时遇到了一些问题。本质上,我想创建一个用户名帐户,其中用户名是用户主体名称。我最初使用的是将显示名称作为用户名的电子邮件注册策略。但是,b2c 并不强制显示名称是唯一的,因此存在一个固有的问题。没有返回带有用户名的声明,因此我无法在我的 Blazor 应用程序中密切关注谁已登录或显示他们的用户名。我可以做一些选择,我很好奇哪一个最容易 implement/how 实现它,因为过去几个小时我一直在用这个来解决问题。
- 在创建 b2c 帐户时,采用用户主体名称并将其设为显示名称
- 通过声明发送用户主体名称(不确定如何操作)
- 使用显示名称注册电子邮件,但以某种方式强制执行 b2c 以确保显示名称是唯一的
- 为来自 b2c 的用户提供唯一显示名称的其他方法
提前致谢!
如果您需要任何额外的声明,您需要输入您的 Azure AD BC 租户并从您的 [=] 配置 Application Claims 36=]用户流,在下面的例子中用户流被调用B2C_1_signupsignin:
如您所见,上面的示例列出了所有 other 可用声明,因为圆顶声明 always 返回,作为用户名。
您可以配置用于在 Identity Provider 中登录的声明(模式):
您收到的索赔如下:
但是如您所见,没有任何 userPrincipalName
或 signinNames
。
这是 Azure AD B2C 中的一个已知问题,在用户流清单中包含此声明不起作用。
我找到的唯一解决方案是上传您的自定义策略并添加:
<OutputClaim ClaimTypeReferenceId = "signInName" />
但这仅适用于 本地帐户。
如果您还想为外部(社交)帐户添加登录名,您需要映射它们,例如:
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="upn" />
在此处查看基础资源 XML:
https://github.com/azure-ad-b2c/samples/tree/master/policies/sign-up-with-social-and-local-account
您需要使用自定义策略:https://aka.ms/ief。用户名未 return 包含在用户流令牌中。
使用自定义策略,您可以使用用户名和 return 他们的用户名(signInNames.username 属性,在 Azure 门户中显示为 userPrincipalName)注册用户到令牌中。
您可以使用我的工具 here. And quick deploy the username sample using this page 和 示例文件夹名称 username-signup-or-signin
.