【发布时间】:2021-11-08 08:04:27
【问题描述】:
我在将当前登录用户的用户名从 Azure b2c 获取到我的 Blazor Web 应用时遇到了一些问题。本质上,我想创建一个用户名帐户,其中用户名是用户主体名称。我最初使用的电子邮件注册策略以显示名称作为用户名。但是,b2c 不强制显示名称是唯一的,因此存在一个固有的问题。没有任何声明包含用户名,因此我无法在我的 Blazor 应用程序中密切关注谁已登录或显示他们的用户名。我可以做一些选择,我很好奇哪一个最容易实施/如何实施,因为过去几个小时我一直在为此烦恼。
- 在创建 b2c 帐户时,获取用户主体名称并将其设为显示名称
- 是否通过声明发送用户主体名称(不确定如何执行此操作)
- 是否使用显示名称注册电子邮件,但以某种方式强制执行 b2c 以确保显示名称是唯一的
- 为来自 b2c 的用户提供唯一显示名称的其他方式
提前致谢!
【问题讨论】:
-
您是否在 b2c 中使用本地帐户?用户流/自定义策略?你在说
signInNames.userName吗?所以你想要一个与显示名称相同的唯一用户名? -
目前,我在 b2c 中使用本地帐户。在注册/登录用户流程中,在身份提供商本地帐户下,您可以选择“电子邮件注册”或“用户 ID 注册”。如果我选择电子邮件注册,电子邮件是唯一标识符,但是,我希望我的用户拥有用户名而不是电子邮件。问题是,如果您使用显示名称,b2c 不会检查它是否是唯一的。用户签名 ID 适用于我的目的,但我无法在 Blazor Web 应用程序中查看用户名是什么,因为它保存为用户主体名称,可在 Azure 中查看。
-
但显示名称与用户名不同。你需要显示名称吗?你可以坚持使用用户名,应该没问题
-
用户名很好,但我无法在 Blazor 中提取该信息。 B2C 仅发送电子邮件和显示名称作为我可以检查的声明。据我所知,没有函数调用来获取用户主体名称。
-
您应该能够自定义从 b2c 返回的声明
标签: c# azure blazor azure-ad-b2c