Azure Active Directory与MVC,客户端和资源标识相同的应用程序

跟进这个问题:

如何在ASP.NET MVC上执行Azure Active Directory单一登录和表单身份validation

我尝试在默认MVC 4的Login操作上编写简单代码,它使用默认的Forms身份validation和Azure Active Directory SSO:

public async Task 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 /使用阿达尔网到身份validation用户-通usernamepassword /

运行应用程序时,我从Azure获得了错误:

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

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

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