我有一个使用混合身份验证的 asp.net webforms (c#) 应用程序。 根据输入的电子邮件后缀类型,用户通过表单方法进行身份验证,或者如果登录电子邮件属于组织,则使用使用 oauth2 的 365 身份验证。
我已经完成了繁重的工作,但我希望 oauth 脚本将之前输入的电子邮件地址传递到 365 登录中,这样它只需要输入密码,而不必再次输入登录名。
我无法识别任何有用的代码。
您可以在将用户重定向到 Microsoft 登录页面之前设置 login_hint(以及其他选项)。
启动.Auth.cs:
private Task OnRedirectToIdentityProvider(RedirectToIdentityProviderNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> arg)
{
string loginhint = arg.Request.Query.Get("login_hint");
if (!string.IsNullOrWhiteSpace(loginhint))
{
arg.ProtocolMessage.SetParameter("hsu", "1"); //disables "sign in with another account" link
arg.ProtocolMessage.SetParameter("login_hint", loginhint); //sets email address so user doesn't have to.
}
return Task.CompletedTask;
}
如何将login_hint传递给此方法取决于您,我通过加载登录页面时设置的login_hint url参数来完成。如果用户已经登录 Microsoft,这通常可以避免他们与 Microsoft 登录页面进行交互,从而导致立即重定向回您的网站。