我只是有一個用戶名,並沒有任何密碼。我只是想檢查這個用戶名是否存在於Active Directory。我該如何解決它?身份驗證使用C#
身份驗證使用C#
回答
可以使用類DirectoryEntry
此類任務。看到這裏的Exists
- 方法:http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.exists.aspx
試試這個:
string strDomain = DOMAINNAME;
string strUserId = USERNAME;
string strPath = "LDAP://DC=" + strDomain.Trim() + ",DC=com";
DirectoryEntry de = new DirectoryEntry(strPath);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user)(SAMAccountName=" + strUserId.Trim() + "))";
SearchResult results = deSearch.FindOne();
if ((results == null))
{
//No User Found
}
else
{
//User Found
}
我會建議使用objectCategory =人,而不是對象類。 ObjectCategory是單值和索引,而objectClass不是 - >使用objectCategory使你的AD查詢更快 – 2010-01-12 10:13:49
@marc_s:只能在* objectCategory *和* objectClass *或* objectClass *中使用* objectCategory *該篩選器在.NET中不起作用。 – 2010-07-13 16:35:21
你不應該使用這種方法,因爲它也試圖*閱讀*在Active Directory中值,而不是檢查認證。您可以擁有有效的憑據,但代碼會失敗,因爲您無權查找用戶。 – 2011-08-18 16:59:54
如果你在.NET 3.5中,你可以使用System.DirectoryServices.AccountManagement
功能。您的代碼看起來是這樣的:
// create a "principal context" - e.g. your domain (could be machine, too)
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "username");
bool userExists = (user != null);
這應該做的伎倆;-)
有關S.DS.AM更多詳細信息,請參閱本優秀的MSDN文章:
Managing Directory Security Principals in the .NET Framework 3.5
- 1. 使用C#的HTTP MAC身份驗證
- 2. 使用FSharp.Data.Http驗證身份驗證
- 3. 未使用表單身份驗證的身份驗證
- 4. 使用PHP身份驗證的HTTP身份驗證
- 5. Sitecore的身份驗證使用API身份驗證/登錄
- 6. Webapi身份驗證,僅使用客戶端身份驗證
- 7. 使用Windows身份驗證的簡單身份驗證代理
- 8. 使用pymongo身份驗證時的身份驗證錯誤
- 9. 使用asp.net身份驗證與自定義身份驗證
- 10. Pydrive身份驗證使用
- 11. 使用HTTP身份驗證
- 12. 使用LDAPS身份驗證
- 13. Multi_Curl使用身份驗證
- 14. Objective C - ASP.NET身份驗證
- 15. 身份驗證Facebook C#SDK
- 16. C#Google API身份驗證
- 17. 谷歌身份驗證C#
- 18. Windows身份驗證C#MVC3
- 19. SMTP身份驗證QT/C++
- 20. 使用Owin OpenId身份驗證混合Owin Asp.Net身份Cookie身份驗證
- 21. 使用BASIC身份驗證和客戶端證書身份驗證
- 22. Rails Api身份驗證與用戶身份驗證
- 23. 禁用其他身份驗證的HTTP基本身份驗證
- 24. 用asp.net進行Azure AD身份驗證身份驗證
- 25. 將用戶身份驗證遷移到Firebase身份驗證
- 26. 我無法使用通用登錄身份驗證身份驗證
- 27. ASP.NET應用程序未使用Windows身份驗證進行身份驗證
- 28. 使用Windows身份驗證和匿名身份驗證獲取用戶名
- 29. libcurl c/C++ Kerberos身份驗證
- 30. JWT身份驗證和用戶驗證
你應該總是將語言添加到標籤列表;) – Scoregraphic 2010-01-12 09:06:25