用户主体名称 (UPN) 声明返回 null

问题描述 投票:0回答:1

我在

AddMicrosoftAccount
核心应用程序中使用
asp.net
进行身份验证。

现在,当我使用

_signInManager.GetExternalLoginInfoAsync()
获取用户主体名称 (UPN) 的声明时,如下所示

ClaimTypes.Upn()
然后返回null

我在

Program.cs
文件中尝试了
AddMicrosoftAccount
选项的各种选项。但所有这些都没有添加所需的声明,即 upn

asp.net-core-mvc
1个回答
0
投票

我可以用代码在我这边重现您的问题

builder.Services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
    microsoftOptions.ClientId = "ClientId ";
    microsoftOptions.ClientSecret = "ClientSecret";
});

使用微软帐户登录并要求我创建一个本地帐户后,在获取外部登录信息时我得到了空。恐怕这是因为这种登录在某些方面“不被识别”为外部帐户。

enter image description here

然后我在

AddMicrosoftAccount
后面添加代码,就可以获取外部登录信息了。

builder.Services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme,
                options => options.SignInScheme = IdentityConstants.ExternalScheme);

enter image description here

同时,如果我们只想获取用户主体名称,我们可以直接从数据表中获取,因为它使用电子邮件地址作为用户帐户,与用户主体名称相同。

© www.soinside.com 2019 - 2024. All rights reserved.