【发布时间】:2015-10-23 02:20:50
【问题描述】:
这是我的场景。我有一个使用 Owin 作为身份验证机制的 MVC 5 应用程序。默认模板在登录操作中调用 SignInManager.PasswordSignInAsync,我想覆盖该操作以使用 LDAP 验证用户而不是查看数据库。
我可以通过以下方式进行验证:
PrincipalContext dc = new PrincipalContext(ContextType.Domain, "domain.com", "DC=domain,DC=com", "user_name", "password");
bool authenticated = dc.ValidateCredentials(userName, password);
然后我可以使用以下方法检索 UserPrincipal:
UserPrincipal user = UserPrincipal.FindByIdentity(dc, IdentityType.SamAccountName, userName);
但是,我被困在这里,我不确定如何继续登录用户。目标是,在我登录用户后,我将有权访问 User.Identity,包括用户所在的所有角色。本质上,应用程序的行为应该像使用 Windows 身份验证一样,但凭据由用户提供登录页面。
您可能会问为什么不直接使用 Windows 身份验证。该应用程序将从网络外部访问,但要求是使用 AD 身份验证和授权。这就是我的困境。
非常感谢任何建议。
谢谢。
【问题讨论】:
标签: asp.net-mvc-5 ldap owin