我在
AddMicrosoftAccount
核心应用程序中使用 asp.net
进行身份验证。
现在,当我使用
_signInManager.GetExternalLoginInfoAsync()
获取用户主体名称 (UPN) 的声明时,如下所示
ClaimTypes.Upn()
然后返回null
我在
Program.cs
文件中尝试了 AddMicrosoftAccount
选项的各种选项。但所有这些都没有添加所需的声明,即 upn
我可以用代码在我这边重现您的问题
builder.Services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = "ClientId ";
microsoftOptions.ClientSecret = "ClientSecret";
});
使用微软帐户登录并要求我创建一个本地帐户后,在获取外部登录信息时我得到了空。恐怕这是因为这种登录在某些方面“不被识别”为外部帐户。
然后我在
AddMicrosoftAccount
后面添加代码,就可以获取外部登录信息了。
builder.Services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme,
options => options.SignInScheme = IdentityConstants.ExternalScheme);
同时,如果我们只想获取用户主体名称,我们可以直接从数据表中获取,因为它使用电子邮件地址作为用户帐户,与用户主体名称相同。