2
我嘗試使用Mono中的Novell.Directory.Ldap庫將用戶身份驗證到活動目錄。我知道有比下面更好的方法,但鑑於我只限於單聲道,這些是我所能看到的唯一支持的例程。活動目錄和LDAP庫
使用.NET庫,我可以使用samAccountName對用戶進行身份驗證。
using (DirectoryEntry de = new DirectoryEntry())
{
de.Username = username;
de.Password = password;
de.Path = string.Format("LDAP://{0}/{1}", ADHostname, DefaultNamingContext);
de.AuthenticationType = AuthenticationTypes.Secure;
using (DirectorySearcher deSearch = new DirectorySearcher())
{
deSearch.SearchRoot = de;
deSearch.PropertiesToLoad.Add("cn");
deSearch.Filter = "(&(objectCatagory=person))";
deSearch.FindOne();
}
}
但是,如果它在單聲道內運行,則無效憑證將失敗。使其工作的唯一方法是通過指定用戶名的UPN:
de.Username =「[email protected]」;
問題是,UPN不是AD的必需屬性。那麼,我如何才能用他們的用戶名來驗證用戶呢?
我看到一個關於一個POST方式做到這一點:Authenticating user using LDAP from PHP
但是,這是一個雞和蛋的問題。如何綁定搜索用戶DN,以便我可以綁定,如果我無法綁定爲經過身份驗證的用戶開始。
謝謝你給予的任何幫助。
這很有道理。我試圖用盡可能少的管理員參與來做到這一點,但我認爲要求服務帳戶的完整DN不是什麼大問題。謝謝。 – 2010-08-22 23:57:45