我在 asp.net core 应用程序中使用 AddMicrosoftAccount 进行身份验证。
现在当我使用 _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);
同时,如果我们只想获取用户主体名称,我们可以直接从数据表中获取,因为它使用电子邮件地址作为用户帐户,与用户主体名称相同。