科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件如何用NDS验证基于Web应用程序的用户

如何用NDS验证基于Web应用程序的用户

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在许多基于Web的应用程序中,了解登录的用户是谁,可以对功能加以控制和/或进行个性化。这包括简单显示一个欢迎页面,或是根据登录的用户建立定制菜单。

作者:builder.com.cn 2007年6月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

服务器端验证

下一个例子将在服务器端执行验证。这个简单的Classic ASP页(列表C)将尝试根据选定的NDS域验证用户提供的证书,然后以简单HTML页的形式给IFrame发送一个响应。在代码中,我们创建了一个NWDir控件实例,然后使用NDS树中的UserNameDomain试图定位用户。

如果无法定位用户,代码将通知用户。如果可以定位用户,则用ValidatePassword函数检查所提供的密码。如果登录有效,我们建立一个简单的HTML页面发送给IFrame,它将通知确认登录的父页面。

列表C

<%

OPTION EXPLICITDIM sCurrentUsername

DIM sCurrentPassword

DIM sCurrentNetworkPath

DIM sCheckLogin' get the data off the form

sCurrentUsername = Request.QueryString("username")

sCurrentPassword = Request.QueryString("password")

sCurrentNetworkPath = Request.QueryString("domain")

‘ create the NDDS object

SET NWDir1=Server.CreateObject(”NWDirLib.NWDirCtrl.1″)

‘ set the value

NWDir1.Fullname = sCurrentNetworkPath

 

SET entry=NWDir1.FindEntry(sCurrentNetworkPath & “\” & sCurrentUsername)

 

‘ if we can’t find the user then redirect to the login page

IF entry IS nothing Then

loginFailed

ELSE

‘ attempt a login

sCheckLogin = NWDir1.Entries(sCurrentUserName).ValidatePassword(sCurrentPassword)

 

‘ if the login is ok

IF sCheckLogin = True THEN

 

‘ close the HTML header and start the doc

Response.Write(”<HTML>” & Chr(13))

Response.Write(”<HEAD>” & Chr(13))

Response.Write(”</HEAD>” & Chr(13))

Response.Write(”<BODY ONLOAD=’alert(” & Chr(34) & sCurrentUsername & Chr(34) & “)’>” & Chr(13))

Response.Write(”</BODY>” & Chr(13))

Response.Write(”</HTML>” & Chr(13))

 

‘ otherwise login failed, so bounce back to the login page

ELSE

loginFailed

END IF

END IF

 

‘ drop the connection to the NDS object

SET NWDir1=Nothing

 

SUB loginFailed

Response.Write(”<HTML>” & Chr(13))

Response.Write(”<HEAD>” & Chr(13))

Response.Write(”<SCRIPT LANGUAGE=’javascript’ TYPE=’text/javascript’>” & Chr(13))

Response.Write(” function loginFailed()” & Chr(13))

Response.Write(” {” & Chr(13))

Response.Write(” alert(’ Login Failed for user ” & sCurrentUsername & “‘);” & Chr(13))

Response.Write(” }” & Chr(13))

Response.Write(”</SCRIPT>” & Chr(13))

Response.Write(”</HEAD>” & Chr(13))

Response.Write(”<BODY ONLOAD=’loginFailed()’>”)

Response.Write(”</BODY>” & Chr(13))

Response.Write(”</HTML>” & Chr(13))

end sub

%>

 

最后会弹出一条消息,通知用户他们是否成功登录。虽然这个例子没有多大价值,但你可以方便地对它进行修订,创建一个ASP会话,或为应用程序保存用户证书的cookie。

如果结合上述两种方法,你可以创建一个登录窗口,它只有在用户根据NDS目录没有通过验证的情况下才会出现;否则,他们就得以无缝处理,好像他们已经通过登录窗口登录。这即是一个SSO应用程序的例子。

其它应用

在上面的三个例子中,我们建立了根据Novell NDS目录在客户端和服务器端探测和验证用户的方法。你也可以根据MSDN中的样本代码,编写一个应用于微软活动目录环境下的类似应用。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章