活动目录asp.net表单身份验证在asp.net MVC 3

本文关键字:asp net MVC 身份验证 表单 活动 | 更新日期: 2023-09-27 18:05:15

我必须实现这样一个接口:

interface IMembershipWrapper
{
  Guid GetUserId();
  Guid GetUserId(string username, bool userIsOnline);
  bool ValidateUser(string userName, string password);
    …
}

指向活动目录并使用Unity注入。

对于某些方法,我可能会抛出一个notimplemtedexception异常,但你认为这通常是可能的吗?你推荐什么策略?

我知道我可以通过web配置"活动目录asp.net表单认证"。配置如下所述。不幸的是,这不是一个选项。

活动目录asp.net表单身份验证在asp.net MVC 3

无需更改web.config中的身份验证系统,这应该是完全可能的。特别是如果你使用的是。net 3.5+。看一下System.DirectoryServices.AccountManagement.

要实现GetUserId(string username, bool userIsOnline),您可能需要尝试以下操作:

public Guid GetUserId(string username, bool userIsOnline) {
    using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]")) {
        var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, username);
        if(user != null)
            return user.Guid.Value;
        else
            return null;
    }
}

PrinicalContext上使用ValidateCredentials()实现ValidateUser(string userName, string password)

public bool ValidateUser(string userName, string password) {
    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]"))
    {
        return pc.ValidateCredentials(userName, password);
    }
}

如果没有更多关于您的实现的信息,我不确定如何去实现GetUserId(),因为看起来你没有足够的信息去活动目录。