65.9K
CodeProject 正在变化。 阅读更多。
Home

基于 Web 的 Active Directory 登录

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (16投票s)

2003年10月9日

2分钟阅读

viewsIcon

444470

downloadIcon

9242

基于 Web 的 Active Directory 登录

概述

基于Web的Active Directory登录实现了Web应用程序的集中单点登录系统。它被开发出来是为了消除数据库中用户密码的维护,无论是否加密。从桌面运行应用程序的用户可以自由访问网络上的资源和/或服务,只要他拥有从Windows获得相应的权限。另一方面,基于Web的应用程序在安全上下文方面与桌面应用程序完全不同。同一个用户在使用浏览器运行应用程序时,将不会拥有这种权限。当我在尝试通过Active Directory中维护的网络用户名和密码通过Web登录时,这就是出现的问题。最终,通过模拟Web服务器的匿名用户来解决这个问题,在大多数情况下,该用户是IUSR_machinename

使用代码

以下是关于如何使用代码的简要说明。

有两个类文件

  1. LoginAdmin
  2. prjLogin

LoginAdmin 是一个ActiveX DLL类型的项目,包含一个标准模块和一个类模块。ImpersonateUser 类有两个方法,您将在ASP代码中使用它们。

' create an object of ImpersonateUser class

 Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
 
' any domain user who has rights to access active directory

 objLogon.Logon "user id", "password", "domain name"

 objLogon.Logoff
 Set objLogon = Nothing

这些是类 ImpersonateUser 的方法及其描述

方法 描述
Logon(strUser, strPassword, strDomain) 在向Active Directory发送请求之前,应该调用此方法。用户应该是有效的域用户,至少具有Active Directory的读取权限。您可以将此用户保存在数据库中,或者将其用户ID和密码硬编码到ASP脚本中。
LogOff() 为了使IIS恢复特定文件的安全权限,在从Active Directory访问信息后,必须调用此方法。

prjLogin 也是一个ActiveX DLL类型的项目,仅包含一个类模块。它使用对Active DS类型库的引用。clsDomainLogin 类有一个方法,包含三个参数:用户名、密码和域。

' create an object of clsDomainLogin class

 Set oUser = Server.CreateObject("prjLogin.clsDomainLogin")

' BindObject has three parameters userid, password and domain name

 iResult = oUser.BindObject(strUser, strPassword, strDomain)

以下是类 clsDomainLogin 的方法及其描述

方法 描述
BindObject(strUser, strPassword, strDomain) 此方法应该在从Active Directory进行身份验证时调用。成功时返回1,不成功时返回0。
© . All rights reserved.