VB.NET对于开发人员来说是一个功能非常强大的开发语言。它的功能特点非常突出,比如不能够提供一个安全性非常高的开发环境等。前几天花了两天时间研究如何实现VB.NET验证LDAP用户身份,看了一些java和vb的代码,碰了不少钉子,试验再试验,终于搞定,与大家分享... #t#
成都创新互联公司网络公司拥有十载的成都网站开发建设经验,上千家客户的共同信赖。提供成都网站设计、成都做网站、外贸网站建设、网站开发、网站定制、卖链接、建网站、网站搭建、响应式网站建设、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务
首先,我要讲的LDAP不是微软的Active Directory目录服务,而是运行在SUN One上面的目录服务。
请看VB.NET验证LDAP用户身份的代码(部分敏感信息删节):
- Private Sub btnTest_Click()Sub btnTest_
Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles
btnTest.Click
- Dim LoginName As String = txtUser.Text
- Dim LoginPwd As String = txtPwd.Text
- If LoginPwd = "" Then
- txtResult.Text = "* Password can not be blank."
- Exit Sub
- End If
- Dim myDirectorySearcher As DirectorySearcher
- Dim mySearchResult As SearchResult
- Dim myDirectoryEntry As DirectoryEntry
- Dim UserName As String
- txtResult.Text = ""
- Try
- If myDirectoryEntry.Exists("LDAP:
//ldapserver.com/uid=" & LoginName & ",
ou=people,ou=intranet,dc=yourdomainname,
dc=com") Then
- Try
- myDirectoryEntry = New DirectoryEntry
("LDAP://ldapserver.com/ou=people,
ou=intranet,dc=yourdomainname,dc=com",
"uid=" & LoginName & ",ou=people,ou=intranet,
dc=yourdomainname,dc=com", LoginPwd,
AuthenticationTypes.ServerBind)
- myDirectorySearcher = New Directory
Searcher(myDirectoryEntry)
- myDirectorySearcher.Filter = "
(uid=" & txtUser.Text & ")"
- myDirectorySearcher.PropertiesToLoad.
Add("DisplayLastName")
- myDirectorySearcher.PropertiesToLoad.
Add("DisplayFirstName")
- mySearchResult = myDirectorySearcher.FindOne
- If mySearchResult Is Nothing Then
- txtResult.Text += "* Login failed."
- Else
- txtResult.Text += ">>> Login passed!" & vbCrLf
- UserName = mySearchResult.GetDirectory
Entry().Properties("DisplayFirstName").
Value & " " & mySearchResult.GetDirectory
Entry().Properties("DisplayLastName").Value
- txtResult.Text += UserName & vbCrLf
- End If
- Catch ex As Exception
- txtResult.Text += "* Login failed." &
vbCrLf & ex.Message
- End Try
- Else
- txtResult.Text += "* Invalid user login name."
- End If
- Catch ex As Exception
- txtResult.Text += "* Can not access the
LDAP server." & vbCrLf & ex.Message
- End Try
- End Sub
这里要说明一下:
1、必须检验密码不能为空,否则会造成验证有误,即空密码能通过验证,不知道为什么。
2、LDAP://......这最前面的四个字母LDAP必须大写!否则报未知错误,不知道为什么,还得我走了一段弯路。
3、ldapserver.com需要替换成LDAP服务器的地址。
4、LDAP://......地址后面的参数,要根据你要访问的LDAP的设置而定。
5、如果密码不对,会引发异常,所以我在异常处理中捕获,但是不知道这样是否正确。
6、If mySearchResult Is Nothing Then 这句我觉得是废话,好像怎么也不会为True,如果密码不对,会引发异常的,但是不放心还是加上这句,可能是我的判断逻辑有问题。
总之,这段VB.NET验证LDAP用户身份的代码肯定不是最***的代码,但是确实是可以完成任务的代码,欢迎大家指正。
本文标题:深入剖析VB.NET验证LDAP用户身份
标题URL:http://www.shufengxianlan.com/qtweb/news21/487971.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联