使用Windows身份验证时获取Active Directory信息?

时间:2011-02-10 18:24:42

标签: .net asp.net-mvc active-directory

我在我的asp.net MVC 3应用程序上使用Windows身份验证。 有没有办法从活动目录中获取用户信息?

我知道我可以使用User.Name.Identity,这适用于登录名。 但是如何从活动目录中获取用户名,姓氏甚至描述或Office。这可以通过.net吗?

4 个答案:

答案 0 :(得分:23)

当然!! 如果您使用的是.NET 3.5或更高版本,那实际上非常简单。

基本上,使用System.DirectoryServices.AccoutManagement命名空间(在此处阅读所有相关内容:Managing Directory Security Principals in the .NET Framework 3.5)。

然后:你需要“找到”用户并抓住它的属性 - 使用类似这样的代码:

// create domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find the user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "username");

if(user != null)
{
    // access the user's properties in a nice, object-oriented way
}

答案 1 :(得分:5)

如果您的代码在您需要信息的用户的上下文中运行,则它会变得更轻(即Windows身份验证):

//Must reference System.DirectoryServices.AccountManagement
var user = UserPrincipal.Current;

var firstName = user.GivenName;
var lastName = user.Surname;

答案 2 :(得分:1)

听起来您可能想要使用System.DirectoryServices namespaceHere's有关如何读取Directory对象属性的指南。

答案 3 :(得分:0)

在我的环境中,我不得不将其添加到Web.config中的部分:

<identity impersonate="true" />