0

我正在创建一个 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 表中,那么我还有哪些其他选择?

4

2 回答 2

1

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

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

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

于 2013-10-21T11:21:24.653 回答
1

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

要加密的示例 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_ENCODE_BASE64 设置 objEncryptedData = 无

用于解密的示例 ASP 代码:

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

objEncryptedData.Decrypt(sEncryptedStream) sDecryptedData = objEncryptedData.Content

设置 objEncryptedData = 无

于 2013-10-30T17:16:24.723 回答