在我的程序中我有
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
没有声明。
出了什么问题?这应该有效!
默认值被破坏。
改变
microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
到
microsoftOptions.SignInScheme = "Identity.External";
已经成功了。