跟进这个问题:
How to do both Azure Active Directory Single Sign On and Forms Authentications on ASP.NET MVC
我尝试在默认MVC 4的Login操作上编写简单代码,它使用默认的Forms身份验证和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和凭证是否真的有意义。请有人给我一些暗示。
答案 0 :(得分:4)
ADAL并不意味着在Web应用程序中实现Web登录。 ADAL帮助应用程序获取用于访问其他资源的令牌:换句话说,它可以帮助您的应用程序成为客户端。此外,用户名/密码在Web应用程序中不可用,因为它仅用于本机应用程序。 要同时使用FormsAuth和Azure AD,请考虑添加ASP.NET身份中间件和OpenId Connect中间件。 OpenId Connect中间件是用于通过Azure AD实现Web SSO的库。