Asp classic 存储要在ASP中使用的域管理员密码

Asp classic 存储要在ASP中使用的域管理员密码,asp-classic,active-directory,adsi,Asp Classic,Active Directory,Adsi,我正在创建一个ASP应用程序,允许用户通过SSL连接更改其active directory密码 我最终实现了所有这些功能,但我使用的方法需要域管理员密码,如下所示 Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://domain", "Administrator", sDomainPassword, ADS_SECURE_AUTHENTICATION) Set objIADSUser = objIADS.GetObject("user"

我正在创建一个ASP应用程序,允许用户通过SSL连接更改其active directory密码

我最终实现了所有这些功能,但我使用的方法需要域管理员密码,如下所示

Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://domain", "Administrator", sDomainPassword, ADS_SECURE_AUTHENTICATION)
Set objIADSUser = objIADS.GetObject("user", sUserID)
objIADSUser.ChangePassword sOldPassword, sNewPassword
现在一切正常,但我需要将域管理员密码传递给OpenDSObject方法


显然,我不想将其存储在文本变量中的clear中,也不想存储在SQL Server表中的clear中,那么我还有什么其他选项呢?

在前面的评论之后,我意识到了过期帐户中密码更改的问题。所以,新的尝试

使用常用工具,您可以将用于更改密码的代码包装到.wsc(windows脚本组件)文件中,注册它,添加到使用特定凭据运行的com+应用程序(在您的情况下是管理员)中,并从asp代码中实例化组件以更改密码

这样,组件将在所需的凭据下运行,密码将存储在com+配置中。

您可以在服务器上安装,并使用它来加密这样的敏感数据

要加密的ASP代码示例:

设置objEncryptedData=Server.CreateObject(“CAPICOM.EncryptedData”) objEncryptedData.Algorithm.Name=3'3=3DES objEncryptedData.Algorithm.KeyLength=5'5=256bit objEncryptedData.SetSecret“您的加密密码” objEncryptedData.Content=“您的机密数据”

sEncryptedStream=“&objEncryptedData.Encrypt(0)”0=CAPICOM\u ENCODE\u BASE64 Set objEncryptedData=Nothing

要解密的ASP代码示例:

设置objEncryptedData=Server.CreateObject(“CAPICOM.EncryptedData”) objEncryptedData.SetSecret“您的加密密码”

objEncryptedData.Decrypt(sEncryptedStream) sDecryptedData=objEncryptedData.Content


设置objEncryptedData=Nothing

如果您有userID和oldPassword,并且由于默认情况下用户有权更改自己的密码,为什么不使用用户凭据而不是管理员凭据来更改密码?