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

时间:2013-10-17 19:21:31

标签: asp-classic active-directory adsi

我正在创建一个ASP应用程序,允许用户通过SSL连接更改其活动目录密码。

终于完成了所有这些工作,但我用来完成它的方法需要域管理员密码,如下所示。

Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://domain", "Administrator", sDomainPassword, ADS_SECURE_AUTHENTICATION)
Set objIADSUser = objIADS.GetObject("user", sUserID)
objIADSUser.ChangePassword sOldPassword, sNewPassword

现在一切正常但我需要将域管理员密码传递给OpenDSObject方法。

我显然不希望将它以明文形式存储在文本变量中,也不希望在SQL Server表中以明文形式存储,那么我还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

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

使用常用工具,您可以包装代码以在.wsc(Windows脚本组件)文件中进行密码更改,注册它,添加到在相应凭据下运行的com +应用程序(在您的情况下为Administrator)并实例化您的asp代码中的组件用于更改密码。

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

答案 1 :(得分:1)

您可以在服务器上安装CAPICOM from Microsoft,并将其用于加密敏感数据,如下所示。

要加密的示例ASP代码:

设置objEncryptedData = Server.CreateObject(“CAPICOM.EncryptedData”) objEncryptedData.Algorithm.Name = 3'3 = 3DES objEncryptedData.Algorithm.KeyLength = 5'5 = 256bit objEncryptedData.SetSecret“你的加密密码” objEncryptedData.Content =“your-secret-data”

sEncryptedStream =“”& objEncryptedData.Encrypt(0)'0 = CAPICOM_ENCODE_BASE64 设置objEncryptedData = Nothing

解密的示例ASP代码:

设置objEncryptedData = Server.CreateObject(“CAPICOM.EncryptedData”) objEncryptedData.SetSecret“your-encryption-password”

objEncryptedData.Decrypt(sEncryptedStream) sDecryptedData = objEncryptedData.Content

设置objEncryptedData = Nothing