2010-05-13 103 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

相關問題