2010-05-13 105 views
1

我在asp.net(由别人好心给定的)一些代码来查询AD获取用户名和电子邮件等如何查询AD从LAN ID获得名电子邮件

using System.DirectoryServices; 
using System.DirectoryServices.ActiveDirectory; 
using ActiveDs; 

     DirectorySearcher search = new DirectorySearcher(new DirectoryEntry(), string.Format("(samaccountname={0})", id)); 
     if (search == null) 
      return id; 
     if (search.FindOne() == null) 
      return id; 
     DirectoryEntry usr = search.FindOne().GetDirectoryEntry(); 
     IADsUser oUsr = (IADsUser)usr.NativeObject; 
     return string.Format("{0} {1}", usr.Properties["givenname"].Value, usr.Properties["sn"].Value); 

然而,这需要用身份证进行身份验证,每2周更改一次,然后在web.config中更新,通常会被遗忘

是否有任何非模拟代码可以实现相同的结果?

更新 - 这是一个配置工具,它查找姓名,电子邮件ID等 我喜欢的服务的A/C的想法

Q - 这怎么可能运行(冒充)只是一个广告代码“服务”a/c?任何样品/代码?

你怎么impersona

回答

0

我们通常要求IT给我们一个域服务帐户。您仍然需要模仿,但使用服务帐户时,密码不必每两周更改一次,并且针对您需要的特定功能授予了特定权限,因此这意味着您的维护非常低。

0

我不这么认为,因为你需要结合使用有效凭据域,以便从Active Directory读取。

将用户名/密码视为连接数据库的一部分。我会要求您的域管理员提供复杂的用户名和密码,并要求他们授予其有限的登录权限并将密码设置为永不过期。然后将这些文件存储并使用到您的Web.config文件中。

1
  1. 为了您的特殊目的,ServiceAccount将被添加到AD;
  2. 如果您的ASP.NET应用程序适用于您组织中的局域网,则可以简单地忘记提供用户名和密码,并且只提供根域。这样,Active Directory将搜索Windows身份验证的用户,而不是使用模拟(这假定访问您的应用程序的用户有权执行您的应用程序提供的任务)。

你的应用程序需要做什么?

如果您的应用程序管理用户帐户,组和OU,则只有当通过应用程序执行这些任务的用户没有使用其常规用户帐户管理AD的权限时,才需要使用模拟。这不应该发生。因此,如果用户具有适当的权限,则省略凭证将只允许AD搜索当前登录的用户。

+0

更新了Ques – Kumar 2010-05-14 17:42:26

相关问题