2

是否可以從Web應用程序中獲取客戶端計算機上的用戶的活動目錄憑據?如何在Web應用程序中從客戶端計算機獲取AD憑據?

爲了澄清,我正在設計一個將駐留在客戶端Intranet上的Web應用程序。

需要在訪問應用程序時不提示應用程序的用戶提供憑據,而是應該自動抓取登錄到客戶機的用戶憑證,而無需用戶交互。

+0

什麼是web應用程序框架? ASP.NET?這將是相關的。 – 2008-10-10 17:34:53

回答

1

也許.NET有一個更直接的方式來做到這一點,但使用PHP,我只是作爲LDAP服務器訪問我們的Active Directory服務器。

我不確定需要對服務器進行哪些調整才能做到這一點。我沒有設置服務器,我只是查詢它。 我並不是建議你使用PHP。我只是覺得更容易處理LDAP,然後嘗試直接綁定到Active Directory。

5

絕對如此。這對於Intranet應用程序尤其有用。

既然你沒有指定你的環境,我會認爲它是.NET,但這當然不是唯一的可能。

使用LDAP可以輕鬆查詢Active Directory。如果你使用.NET,你可以在this code example或下面的例子中做類似的事情。你也可以在SQL environments之內完成。

如果您只需要Windows來處理身份驗證,則可以將.NET Web應用程序設置爲Windows Authentication。請確保您的應用程序在IIS內的turn off Anonymous Logins。完成後,您將能夠訪問用戶的Windows登錄名並使用它進行進一步的安全檢查(例如,其AD公司的group/role membership)。

您還可以使用企業圖書館的Security Application Block之類的東西簡化整個混亂。


下面是一個簡短的C#示例:(轉換到VB.NET here

using System.DirectoryServices; 

/// <summary> 
/// Gets the email address, if defined, of a user from Active Directory. 
/// </summary> 
/// <param name="userid">The userid of the user in question. Make 
/// sure the domain has been stripped first!</param> 
/// <returns>A string containing the user's email address, or null 
/// if one was not defined or found.</returns> 
public static string GetEmail(string userid) 
{ 
    DirectorySearcher searcher; 
    SearchResult result; 
    string email; 

    // Check first if there is a slash in the userid 
    // If there is, domain has not been stripped 
    if (!userid.Contains("\\")) 
    { 
     searcher = new DirectorySearcher(); 
     searcher.Filter = String.Format("(SAMAccountName={0})", userid); 
     searcher.PropertiesToLoad.Add("mail"); 
     result = searcher.FindOne(); 
     if (result != null) 
     { 
      email = result.Properties["mail"][0].ToString(); 
     } 
    } 

    return email; 
} 

您不必到指定的域控制器。執行DirectorySearcher的空白/默認構造函數將導致它嘗試自動查找一個—實際上,這是the preferred method

+0

我試圖做一些類似於您描述的內容,但是您是否必須指定Active Directory路徑的某處? – Geoff 2008-10-10 18:21:15

+0

不是。如果你不這樣做,它會問你的本地DNS。這實際上是首選的「可擴展」方法。查看我的擴展/編輯答案。 – 2008-10-10 20:03:39

0

不,當然不是。你能想象一下這個破壞會導致隨機的網絡應用程序能夠得到你的AD用戶名和密碼嗎?

現在,如果您只需要用戶名 - 如果您使用的是integated windows auth,則在REMOTE_USER中。而且,Windows驗證會自動將用戶登錄到您的網站 - 假設您共享一個域(或信任)。

編輯:IWA在Intranet方案中工作,因爲IE默認情況下在Intranet安全區域中包含Intranet站點。另外,系統管理員可以使用GPO設置其他可信網站。 Firefox也是supports NTLMOperaChrome也是如此。總而言之,建立一個內聯網並不是一個壞方法。

但請注意,您沒有獲得憑據。你與客戶談判一個令牌,這是IWA安全的保證(和我的上述觀點相關)。

1

Windows集成身份驗證,用戶必須使用IE,並且該站點必須位於用戶的可信站點中。如果這些事情是真的,那麼IE會將您的Windows安全令牌傳遞給網站,並且它會對其進行驗證。我們在Intranet上使用SharePoint來做到這一點,否則,訪問任何受限制的內容都是一種痛苦 - 每次單擊文檔時都會收到提示。

相關問題