出于学习目的,我正在编写自己的 Active Directory 客户端。为了执行解锁帐户和重置密码等命令,我必须输入我的管理员帐户和密码,并以我的管理员帐户使用和WindowsIdentity.Impersonate
运行代码。我想知道我的密码保护选项,因为它必须在我的程序中多次使用。
据我了解,我可以SecureString
用来存储密码。但是要以我的管理员帐户运行代码,我有 use WindowsIdentity.Impersonate
,并且要使用它,我必须从中获取一个令牌,LogonUser
该令牌需要常规string
而不是SecureString
.
所以我必须:
启动时登录
将输入转换为
SecureString
清除输入
然后稍后当我想执行需要提升的功能时:
将之前创建的转换
SecureString
为string
将转换后的字符串传递给
LogonUser
清除转换字符串为
null
执行命令
清除
LogonUser
对象
这是解决这个问题的正确方法吗?SecureString
必须将其转换为使用它似乎很奇怪string
......似乎它会破坏目的并使密码在我转换它时更容易受到攻击。
编辑:修复了 LogonUser 的名称