当前位置:  开发笔记 > 编程语言 > 正文

使用System.DirectoryServices对域用户进行身份验证

如何解决《使用System.DirectoryServices对域用户进行身份验证》经验,为你挑选了2个好方法。

给定域用户的用户名和密码,以编程方式验证该用户的最佳方法是什么?



1> John Christe..:

似乎.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

命名空间似乎也提供了许多操作域帐户的方法(更改密码,使密码过期等).



2> David J. Sok..:

您可以使用一些黑客进行身份验证.

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.


你永远不应该捕获所有类似的异常... COMException是当你无法访问LDAP服务器时将被抛出的东西,这就是你要捕获的东西.
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有