将电子邮件传递到oauth URL

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

我有一个使用混合身份验证的 asp.net webforms (c#) 应用程序。 根据输入的电子邮件后缀类型,用户通过表单方法进行身份验证,或者如果登录电子邮件属于组织,则使用使用 oauth2 的 365 身份验证。

我已经完成了繁重的工作,但我希望 oauth 脚本将之前输入的电子邮件地址传递到 365 登录中,这样它只需要输入密码,而不必再次输入登录名。

我无法识别任何有用的代码。

c# asp.net webforms office365
1个回答
0
投票

您可以在将用户重定向到 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 登录页面进行交互,从而导致立即重定向回您的网站。

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