将密钥安全地存储在.NET Standard跨平台应用程序中

问题描述 投票:1回答:1

我正在研究C#PowerShell模块,它将成为某些服务REST API的简单包装。我想以PowerShell标准/ .NET标准为目标,并使模块在所有受支持的平台上可用。

对于此应用程序,身份验证需要用户在服务网站上发布的API令牌。每次打开会话时都输入密钥非常不便,因此我需要某种方法将API密钥安全地存储在用户个人资料中。

问题是-我找不到一种简单的方法来加密具有透明跨平台支持的数据。最初,我想使用SecureString,但它是(a)deprecated,而(b)在Linux上似乎没有很好的支持。在理想的情况下,我希望具有某种类似于Windows加密的机制-用户证书对API密钥进行加密,然后将结果放入用户文件夹中的文本文件中。

这不是财务或任务关键型应用程序,不需要一流的安全性,但仍然对我的主文件夹中的纯文本机密敏感,这使我感到紧张。是的,我正在与您交谈,AWS开发工具包作者:)

c# .net powershell cross-platform securestring
1个回答
0
投票

[我的第一个念头是:“只需将密钥保存到ENV变量...”但是,如果我正确理解了OP的问题,则即使在OP的计算机上,也必须限制对此秘密的未授权读取。

我可以看到的一个选择就是创建一个文件夹(或者可能是文件),并仅授予一个特定用户访问权限。最终,人们可以创建一个新的用户帐户,该帐户将用于在Powershell中运行代码,并授予该新用户独占的权限来读取机密文件。这将阻止某些从OP帐户运行的第三方程序读取机密文件。

© www.soinside.com 2019 - 2024. All rights reserved.