0

我需要使用 ADAL 中可用而 MSAL 中不可用的高级身份验证方案。

此外,我希望 Outlook.com 用户(live.com / 个人帐户)能够登录。

Live SDK 不可用,但我可以在门户中创建新的应用标识符。

问题

  • 如果我的目标是支持 ADALv1,并且还支持 LiveID 帐户,我应该走哪条路线?

我正在考虑使用两页身份验证屏幕,类似于 Azure 和 Office 已经做的,并查询电子邮件地址,如下所示。

http://odc.officeapps.live.com/odc/emailhrd/getidp?hm=0&emailAddress=email@domain.com

https://login.microsoftonline.com/GetUserRealmExtended.srf?login=EMAIL@COMPANY.com

如果 AD 中只有一个用户帐户,那么我将透明地重定向到 AzureAD。

如果 Outlook.com/live.com 中只有一个帐户,那么我将重定向到那里。

4

1 回答 1

0

不确定您处理的限制是什么。但是,您提到的门户是为 Azure AD V2.0 端点注册应用程序。

在您的场景中为 Azure AD 帐户提供单独的登录按钮是否有帮助?如果是,您可以参考以下代码:

提供两个按钮来选择要登录的帐户:

<input type="button" value="AzureAD" onclick="location.href='@Url.Action("SignIn", "Account",new { provider="aad"} )'" />
<input type="button" value="Microsoft" onclick="location.href='@Url.Action("SignIn", "Account",new { provider="microsoft"} )'" />

账户控制人:

public void SignIn(string provider,string ReturnUrl = "/")
{
    if (!Request.IsAuthenticated)
    {
        if ("aad" == provider)
            HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = ReturnUrl }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
        else
            HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = ReturnUrl }, "Microsoft");
    }
}

启动.cs

    app.UseMicrosoftAccountAuthentication(
        clientId: "",
        clientSecret: "");

    app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
    {
        ClientId = "",
        Authority = "",
    });
于 2017-05-09T07:02:18.567 回答