我有一个使用OpenId,Identity Server 4和Microsoft作为外部提供程序的项目。
大多数都工作正常,但是使用Microsot帐户登录时遇到一个令人讨厌的错误。
我将用重现该错误的步骤来描述该错误: 1)单击按钮“与Microsoft连接” 1)连接一个Microsoft帐户(account1 @ ...) 2)断开与我的应用程序的连接 3)再次单击“与Microsoft连接”按钮 4)到达Microsoft页面时,您应该列出以前的帐户,并且其中的Connected已损坏 5)点击使用其他帐户(account2 @ ...) 6)输入真实帐户的电子邮件 7)然后输入错误的密码 8)页面将使用“错误密码”重新加载,然后再次重新加载(无需用户任何交互),并且您将与使用的第一个帐户(account1 @ ...)
相关联我尝试添加选项。MaxAge= TimeSpan.FromSeconds(15);在OpenIdConnectOptions中,但不能解决问题。它按照我必须重新输入密码的方式进行操作,但是在步骤8中,帐户已更改(它是account1 @ ...)
我尝试设置选项。Prompt=“ Login”而不是“ SelectAccount”,但用户每次都必须重新输入电子邮件。
我注意到的一件事情是,如果我当前使用两个Microsoft帐户登录并且输入了错误的凭据,则不会自动切换
这是我目前为OpenId添加Microsoft的方法:
.AddOpenIdConnect("Microsoft", "Microsoft", options =>
{
options.Authority = configuration["Authentication:AzureAD:Authority"];
options.TokenValidationParameters =
new TokenValidationParameters { ValidateIssuer = false };
options.ClientId = configuration["Authentication:AzureAD:ClientId"];
options.CallbackPath = configuration["Authentication:AzureAD:CallbackPath"];
options.GetClaimsFromUserInfoEndpoint = true;
options.Prompt = OpenIdConnectPrompt.SelectAccount;
options.MaxAge = TimeSpan.FromSeconds(15);
options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = (context) =>
{
context.Response.Redirect("/");
context.HandleResponse();
return Task.FromResult(0);
}
};
});
我的目的是更正自动切换帐户。
如何防止Microsoft在帐户之间自动切换?
提前感谢您的帮助