我正在创建一个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表中以明文形式存储,那么我还有其他选择吗?
答案 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