ASP.Net Core openid Microsoft使用错误的凭据更改帐户

时间:2019-05-20 12:49:40

标签: c# asp.net-core openid identityserver4

我有一个使用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在帐户之间自动切换?

提前感谢您的帮助

0 个答案:

没有答案