【问题标题】:Storing domain administrator password to use in ASP存储域管理员密码以在 ASP 中使用
【发布时间】:2013-10-17 19:21:31
【问题描述】:

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

【问题讨论】:

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

标签: asp-classic active-directory adsi


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以在服务器上安装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 = "你的秘密数据"

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

    要解密的示例 ASP 代码:

    设置 objEncryptedData = Server.CreateObject("CAPICOM.EncryptedData") objEncryptedData.SetSecret "你的加密密码"

    objEncryptedData.Decrypt(sEncryptedStream) sDecryptedData = objEncryptedData.Content

    设置 objEncryptedData = 无

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2016-12-25
      • 2015-08-05
      • 2011-07-03
      相关资源
      最近更新 更多