【问题标题】:Azure Active Directory with MVC, the client and resource identify the same applicationAzure Active Directory 与 MVC,客户端和资源标识同一个应用程序
【发布时间】:2015-06-24 06:24:19
【问题描述】:

跟进这个问题:

How to do both Azure Active Directory Single Sign On and Forms Authentications on ASP.NET MVC

我尝试在默认 MVC 4 的登录操作上编写简单代码,该操作同时使用默认表单身份验证和 Azure Active Directory SSO:

public async Task<ActionResult> Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
    {
        return RedirectToLocal(returnUrl);
    }

    authContext = new AuthenticationContext(authority, new TokenCache());
    var result = await authContext.AcquireTokenAsync(resourceId, clientId, new UserCredential(model.UserName, model.Password));

    // more code
}

因此,如果正常登录 WebSecurity.Login 不成功,我将尝试使用 ADAL.NET 和以下帖子的凭据(用户名/密码)从 AAD 获取令牌:http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/

运行应用程序时,我从 Azure 收到错误:

AADSTS90027:客户端“[ClientId]”和资源“[ResouceId]”标识同一个应用程序。

我不确定直接在 MVC 登录操作上使用 ADAL 和凭据是否真的有意义。请有人给我这个东西的提示。

【问题讨论】:

  • 我仍然建议您重新考虑您的方法并考虑被动身份验证。
  • 确切地说,2fac 身份验证可能是支持被动身份验证而不是您想要实现的场景的最大论据之一。
  • @WiktorZychla:是的,您是对的,感谢您的推荐,这对我们来说是行不通的,即使是 2 因素身份验证,我们也会按照您的建议和以下答案的建议进行

标签: c# asp.net-mvc azure-active-directory


【解决方案1】:

ADAL 并不是为了在 Web 应用程序中实现 Web 登录。 ADAL 帮助应用程序获取访问另一个资源的令牌:换句话说,它帮助您的应用程序成为客户端。此外,用户名/密码在 Web 应用程序中不可用,因为它只能在本机应用程序中使用。 为了同时使用 FormsAuth 和 Azure AD,请考虑添加 ASP.NET 身份中间件和 OpenId Connect 中间件。 OpenId Connect 中间件是用于通过 Azure AD 实现 Web SSO 的库。

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 2018-06-20
    • 2020-02-15
    • 2017-07-29
    • 2016-03-28
    • 2014-12-27
    • 2019-04-28
    • 2018-11-30
    • 2019-12-27
    相关资源
    最近更新 更多