我怎样才能获得byte[]相当于a SecureString(我从中得到的PasswordBox)?
我的目标是使用a将这些字节写入CryptoStream文件,并且Write该类的方法接受byte[]输入,因此我想将其转换SecureString为byte[]所以我可以使用a CryptoStream.
编辑:我不想使用,string因为它打败了一个点SecureString
我有一个带有WebActivity的ADF v2 Pipeline,它有一个REST Post调用来从AD令牌api获取Jwt访问令牌(https://login.microsoftonline.com/myorg.onmicrosoft.com/oauth2/token)
我必须在正文中传递用户名和密码.现在,我正在使用管道参数来传递这些请求,并且工作正常.
username=@{pipeline().parameters.username}
&password=@{pipeline().parameters.password}
Run Code Online (Sandbox Code Playgroud)
但是,参数选项卡有纯文本,我必须保证.
现在,我有什么选择来保护我在这个管道中使用的参数值而不是纯文本.
我已经探讨了这篇文章https://docs.microsoft.com/en-us/azure/data-factory/store-credentials-in-key-vault#reference-secret-stored-in-key-vault 但是,这是存储数据存储的秘密.在我的网络活动中,我没有任何数据集.它只是一个休息电话的网络活动.
任何帮助或指示将不胜感激.谢谢
securestring azure-data-factory azure-keyvault azure-data-factory-2
如何使用返回的值securestring或secureObject从链接的 ARM 模板返回的值?
例如,一个子链接模板名为CreateStorage
outputs。例如,在模板输出中返回 SAS:
"outputs": {
"createdContainerSas": {
"type": "string",
"value": "[concat('https://', variables('storageAccountName'), '.blob.core.windows.net/', variables('containerName'), '?', listServiceSas(variables('storageAccountName'), '2018-07-01', variables('importSasInputs')).serviceSasToken)]"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,主模板会将 SAS 密钥添加到 KeyVault,以便应用程序的其余部分可以使用它。主模板获取值如下:
"value": "[reference('CreateStorage').outputs.createdContainerSas.value]"
Run Code Online (Sandbox Code Playgroud)
问题在于,当前返回的 SAS 密钥意味着string它在 Azure 部署 UI 中以纯文本形式显示。
但是,当我将返回对象的类型更改为 orsecurestring时secureObject,然后createdContainerSas.value调用时,会遇到以下错误:
{\r\n \"code\": \"InvalidTemplate\",\r\n \"message\": \"Unable to process template language expressions for resource '/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.Resources/deployments/CreateKeyVault' at line …Run Code Online (Sandbox Code Playgroud) 我正在处理的程序的一个功能请求是能够保存用户输入的凭据列表,以便可以共享它们.启发此请求的特定用例是在大型企业网络上使用我们的程序,该网络由相当好的LAN组成,这些LAN通过片状WAN连接.我们的想法是,不是让我们的程序在WAN关闭时击败WAN,而是发送一个包含严密保护的管理员凭据的"配置"文件,在每个局域网中运行并压缩结果并通过电子邮件发送给它背部.
是啊.
我最初的本能是嘲笑这个请求 - 保存密码?真?当然,公司的网络部门更愿意尝试销售他们拥有的任何广域网产品 - 但事实证明我使用凭证的其中一个类可以采用SecureString,而且,总是很好的关注你可以节省一些人的努力.这让我想知道:
是否可以保存加密的SecureString,以便我可以将敏感数据保存到文件中并在其他地方打开?
您有什么想法,Stack Overflow?
在我正在为客户开发的小应用程序中,我需要询问用户他的Windows登录用户名,密码和域,然后使用System.Diagnostics.Process.Start启动应用程序.
我有一个带有UseSystemPasswordChar的文本框来屏蔽输入的密码.
我需要一个System.Security.SecureString来将密码提供给System.Diagnostics.Process.Start.
如何将输入的文本转换为安全字符串而不是一个又一个字符?或者:是否有更好的窗口控件要求用户输入密码,将输入的文本作为SecureString返回?
我想使用SecureString来保存数据库的连接字符串.但是,只要我将SqlConnection对象的ConnectionString属性设置为securestring的值,它肯定会对能够读取应用程序内存的任何其他应用程序可见吗?
我做了以下假设:
a)我无法在托管内存之外实例化SqlConnection对象
b)托管内存中的任何字符串都可以被Hawkeye等应用程序读取
我相信我误解了一个基本部分SecureString.我知道这string是不可变的,并且在堆上找到密码或敏感数据作为明文.
我正在努力理解的是,如何SecureString在需要验证数据库中哈希密码的客户端应用程序中使用?
这是我的背景:
SecureString通过SecurePassword属性将密码存储在a中.怎么办?如何SecureString首先将WITHOUT重新转换为字符串?
到目前为止我收到的所有建议都是编写扩展方法转换SecureString为String,哈希,然后将其发送到db进行验证.但这打败了整个演习!
我必须接受SecureString在我提到的上下文中没用的东西并使用普通的string吗?
是否可以解密通过PowerShell加密的C#中的字符串以及如何?
该字符串通过PowerShell加密,如下所示:
$pw = read-host "Enter Password" –AsSecureString
ConvertFrom-SecureString $pw | out-file "C:\file.txt"
Run Code Online (Sandbox Code Playgroud)
要使用PowerShell将其转换回来,我可以使用这些调用C#类的命令System.Runtime.InteropServices.Marshal.
$pwdSec = Get-Content "C:\file.txt" | ConvertTo-SecureString
$bPswd = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwdSec)
$pswd = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bPswd)
Run Code Online (Sandbox Code Playgroud)
文件包含已转换为加密标准的字符串string("hello").
因此,如果打开file.txt文件,它看起来类似于:
01000000d08c9ddf0115d1118c7a00c04fc297eb0100000052ded6c2db80e748933432e19b9de8b10000
000002000000000003660000c00000001000000016dc35885d76d07bab289eb9927cfc1e000000000480
0000a0000000100000003106cde553f45b08d13d89d11336170b280000005cc865c1ee1b57e84ed3d1a2
d3f2d0ec0f189b532e61c18d1f31444d6f119a1e8368477fd2d81f54140000000cb0262e58b08ae14f37
22c14c69684841b6b21c
Run Code Online (Sandbox Code Playgroud) 所以我想为本地用户保存一个安全的字符串变量类型。这样我就可以运行 Convertfrom-securestring 在 .ps1 文件中进行其余 api 调用,而无需访问密码。我正在尝试的可能吗?
我正在使用的代码如下,但尚未运行:
$PlainPassword = "atestpassword"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
[Environment]::SetEnvironmentVariable('JiraCreds', $SecurePassword, "User")
Run Code Online (Sandbox Code Playgroud)
环境变量是否只保存为字符串而不支持其他数据类型?
出于学习目的,我正在编写自己的Active Directory客户端.为了执行解锁帐户和重置密码等命令,我必须输入管理员帐户和密码,并使用并WindowsIdentity.Impersonate运行代码作为我的管理员帐户.我想知道我保护密码的选项,因为它必须在我的程序中多次使用.
据我所知,我可以SecureString用来存储密码.但是为了运行代码作为我的管理员帐户,我已经使用了WindowsIdentity.Impersonate,并且要使用我必须得到一个令牌,LogonUser从中需要常规string而不是SecureString.
所以我必须:
在启动时登录
将输入转换为 SecureString
清除输入
然后,当我想要执行需要提升的函数时:
将先前创建的转换SecureString为string
将转换后的字符串传递给 LogonUser
清除转换字符串 null
执行命令
清除LogonUser对象
这是接近这个的正确方法吗?这似乎不可思议必须有转换的SecureString要string使用它...好像它会破坏的目的,并留下密码更容易,而我将它转换.
编辑:修复了LogonUser的名称
securestring ×10
c# ×6
.net ×5
encryption ×2
powershell ×2
wpf ×2
azure ×1
hash ×1
passwords ×1
security ×1
sql-server ×1
variables ×1