0
我想查看login
和password
與AD信息的匹配情況。我試着用這件衣服,但我得到一個例外FindOne
(用戶名或密碼錯誤,但他們是正確的)。我知道有該PrincipalContext
解決方案,但我需要能夠設置服務器(生產,開發,...)使用Active Directory驗證密碼
感謝,
var Ad = new DirectoryEntry("LDAP://server1.domain.com", username, password);
var AdSearcher = new DirectorySearcher(Ad);
AdSearcher.Filter = String.Format("(anr={0})", username);
AdSearcher.PropertiesToLoad.Add("sAMAccountName");
AdSearcher.PropertiesToLoad.Add("displayName");
var AdSearcherResults = AdSearcher.FindOne();
var userFullName = AdSearcherResults.Properties["displayName"][0].ToString();
var userUid = AdSearcherResults.Properties["sAMAccountName"][0].ToString();
if (Membership.ValidateUser(username, userUid))
return true;
return false;
UPDATE1我想這太:
using (var context = new PrincipalContext(ContextType.Domain, "server1.domain.com"))
{
var isValid = context.ValidateCredentials(username, password);
}
我的電腦沒有連接到域,但應該是我認爲的工作。
見[我的該另一SO問題的回答(http://stackoverflow.com/questions/290548/c-sharp-validate-a-username-and-password-against-active-directory/499716 #499716) –
另外:'PrincipalContext'類**有**重載的構造函數,允許您準確地定義該域內的哪些域以及哪些容器可用於驗證...... [請參閱**精彩**和自由有關此主題的MSDN文檔!](http://msdn.microsoft.com/zh-cn/library/system.directoryservices.accountmanagement.principalcontext.principalcontext.aspx) –
@marc_s查看我的更新1,謝謝。 –