GetExternalLoginInfoAsync 为 AddMicrosoftAccount 返回 null

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

在我的程序中我有

builder.Services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
    microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
    microsoftOptions.ClientId = "...";
    microsoftOptions.ClientSecret = "...";

    microsoftOptions.AuthorizationEndpoint = "https://login.microsoftonline.com/.../oauth2/v2.0/authorize";
    microsoftOptions.TokenEndpoint = "https://login.microsoftonline.com/.../oauth2/v2.0/token";

    microsoftOptions.Scope.Add("openid");
    microsoftOptions.Scope.Add("profile");
    microsoftOptions.Scope.Add("email");
});

我已在 Azure 中设置它。

新的登录按钮出现在

/Identity/Account/Login
页面上,登录过程继续进行。回调 URL 似乎必须是
/signin-microsoft
,但它会继续到
Identity/Account/ExternalLoginCallback
,在那里我期望 获得一个声明身份,我可以从中设置本地用户帐户。

但是,

var info = await _signInManager.GetExternalLoginInfoAsync();

返回

null

.Request
中我可以看到 cookie 名称
idsrv.external
.User
没有声明。

出了什么问题?这应该有效!

asp.net-identity identityserver4
1个回答
0
投票

默认值被破坏。

改变

microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

microsoftOptions.SignInScheme = "Identity.External";

已经成功了。

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