如何在 C# 中获取当前用户的 Active Directory 详细信息

How to get the current user#39;s Active Directory details in C#(如何在 C# 中获取当前用户的 Active Directory 详细信息)
本文介绍了如何在 C# 中获取当前用户的 Active Directory 详细信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在开发使用 Windows 身份验证的 C# 和 ASP.Net 应用程序.

I am working on an C# and ASP.Net application, that uses Windows Authentication.

即在 Web.config 中:

i.e. in Web.config:

<system.web>
    <authentication mode="Windows" />
</system.web>

我想从 Active Directory 获取当前用户的详细信息(全名、电子邮件地址等).

I want to get details for the current user (full name, email address, etc) from Active Directory.

我可以使用

string username = HttpContext.Current.Request.ServerVariables["AUTH_USER"];

我已经使用他们当前的登录名(不是他们的 Windows 2000 之前的用户登录名)为用户计算出 LDAP 查询:

I've worked out the LDAP query for the user, using their current login name (not their pre Windows 2000 user login name):

DirectorySearcher adSearch = new DirectorySearcher(
        "(userprincipalname=someuser@somedomain.com.au)");
SearchResult adSearchResult = adSearch.FindOne();

但是,我不知道如何使用用户的 W2K 前登录名搜索 AD,或者以someuser@somedomain.com.au"格式获取他们的登录名.

However, I don't know how to either search AD for the user using their pre W2K login name, or get their login name in the 'someuser@somedomain.com.au' format.

有什么想法吗?

推荐答案

pre Windows 2000"名称即 DOMAINSomeBodySomebody 部分称为 sAMAccountName.

The "pre Windows 2000" name i.e. DOMAINSomeBody, the Somebody portion is known as sAMAccountName.

那就试试吧:

using(DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainController"))
{
   using(DirectorySearcher adSearch = new DirectorySearcher(de))
   {
     adSearch.Filter = "(sAMAccountName=someuser)";
     SearchResult adSearchResult = adSearch.FindOne();
   }
}

someuser@somedomain.com.au 是 UserPrincipalName,但它不是必填字段.

someuser@somedomain.com.au is the UserPrincipalName, but it isn't a required field.

这篇关于如何在 C# 中获取当前用户的 Active Directory 详细信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

ActiveDirectory error 0x8000500c when traversing properties(遍历属性时 ActiveDirectory 错误 0x8000500c)
search by samaccountname with wildcards(使用通配符按 samaccountname 搜索)
Get the list of Groups for the given UserPrincipal(获取给定 UserPrincipal 的组列表)
Can you find an Active Directory User#39;s Primary Group in C#?(你能在 C# 中找到 Active Directory 用户的主要组吗?)
How to register System.DirectoryServices for use in SQL CLR User Functions?(如何注册 System.DirectoryServices 以在 SQL CLR 用户函数中使用?)
Query From LDAP for User Groups(从 LDAP 查询用户组)