如何在C# Azure B2C身份验证中获取当前登录用户的用户名和电子邮件地址,而无需使用Graph API?

8

如何获取当前登录用户名以及他们的电子邮件地址?账户的身份提供者是用户名而不是电子邮件。在任何策略(例如登录、注册等)中,用户名都不会作为声明返回。可以像 "配偶姓名" 这样的自定义属性作为登录的声明返回,在这种情况下,我可以通过 ((ClaimsIdentity)User.Identity).FindFirst("extension_SpouseName").Value 访问它。这是一个MVC应用程序。


你是否已经通过B2C Graph API检查了用户配置文件中的电子邮件地址是否可用? - Erik Oppedijk
1
你确定在你的登录策略中没有提供“电子邮件地址”声明吗?你是否已经通过JWT.io检查了该声明中的内容? - Erik Oppedijk
2
@ErikOppedijk 谢谢。这是我的错,我没有在声明中选择电子邮件地址,所以它没有返回电子邮件地址。现在我可以使用代码 ((ClaimsIdentity)User.Identity).FindFirst("emails").Value 获取电子邮件地址。 但是我仍然需要在控制器中获取当前用户名。 - P. Nabin
你是否在 JWT 里面查看过这个?使用 jwt.io 查看里面确切的内容。 - Erik Oppedijk
提醒:截至今日,如果您使用用户名登录选项,那么a)用户名不可通过声明传递,但可以通过Graph检索;b)电子邮件地址可以在声明中使用,但无法通过Graph检索。[如果您采用预览版自定义策略,则可能会获得更多功能。] - mwardm
显示剩余5条评论
1个回答

2
您需要在注册或登录配置文件中选择用户属性-电子邮件地址,以验证访问令牌。 enter image description here

这个屏幕是从哪里来的?它是某种 Azure 配置屏幕吗? - Jason Cheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接