给定域用户的用户名和密码,以编程方式验证该用户的最佳方法是什么?
John Christensen
问问题
8619 次
2 回答
17
.NET 3.5 似乎添加了一个新的命名空间来处理这个问题 - System.DirectoryServices.AccountManagement。代码示例如下:
Private Function ValidateExternalUser(ByVal username As String, ByVal password As String) As Boolean
Using context As PrincipalContext = New PrincipalContext(ContextType.Domain, _defaultDomain)
Return context.ValidateCredentials(username, password, ContextOptions.Negotiate)
End Using
End Function
命名空间似乎还提供了许多操作域帐户的方法(更改密码、密码过期等)。
于 2008-08-28T16:06:26.050 回答
9
您可以使用一些技巧仅进行身份验证。
Try
Dim directoryEntry as New DirectoryEntry("LDAP://DomainController:389/dc=domain,dc=suffix", "username", "password")
Dim temp as Object = directoryEntry.NativeObject
return true
Catch
return false
End Try
如果用户无效,则无法访问目录条目 NativeObject 并引发异常。虽然这不是最有效的方法(例外是邪恶的,等等等等),但它快速而轻松。这还具有与所有 LDAP 服务器一起工作的超酷优势,而不仅仅是 AD。
于 2008-08-28T04:21:26.090 回答