C# 在何处存储VSIX的凭据-Visual Studio 2017扩展

C# 在何处存储VSIX的凭据-Visual Studio 2017扩展,c#,visual-studio,store,credentials,vsix,C#,Visual Studio,Store,Credentials,Vsix,上下文: 我正在为Visual Studio 2017编写VSIX扩展,它需要连接到需要用户身份验证的REST API。 我决定使用VSPackage为我的扩展提供服务 为了能够连接和验证用户,我想将用户凭据存储在某个地方,它可以是用户名和密码,也可以是OAuth令牌,这无关紧要 问题: 存储VSIX凭据信息的最佳位置是什么? 要求: 凭据不应存储为纯文本 不应存储在文本文件中 应按每个用户存储 (我们可以有多个windows用户,一个windows用户=一个VS用户) 应在Visual St

上下文:
我正在为Visual Studio 2017编写VSIX扩展,它需要连接到需要用户身份验证的REST API。 我决定使用VSPackage为我的扩展提供服务

为了能够连接和验证用户,我想将用户凭据存储在某个地方,它可以是用户名和密码,也可以是OAuth令牌,这无关紧要

问题:
存储VSIX凭据信息的最佳位置是什么?

要求:

  • 凭据不应存储为纯文本
  • 不应存储在文本文件中
  • 应按每个用户存储
    (我们可以有多个windows用户,一个windows用户=一个VS用户)
  • 应在Visual Studio的所有运行实例中可用
  • 应与VS2017(15.0+)社区、专业人士和企业合作
至于现在,我已经查看了VS中的用户设置范围,但它是通过纯文本存储在注册表中的,我不想在上面实现我自己的安全性


我还尝试查找有关的更多信息,但它的文档记录很差,缺乏关于如何正确使用它以及它是按用户还是按系统使用的信息。

您可以使用Windows凭据存储,允许您以安全的方式为每个用户存储:

我相信IVsCredentialStoreService会转到注册表的HKCU\Software\Microsoft\VSCommon\14.0\ClientServices\TokenStorage\VisualStudio(即使是VS 2017,但我不确定)VS确实会在TokenStorage注册表中存储IVsCredentialStoreService的值。看起来VS2017也使用14.0注册表项。在对registry进行了一些研究并尝试使用IVsCredentialStoreService之后,我发现VS也存储了他们的VS用户信息和会话令牌。仍然是没有文件记录的,但也许这是正确的方式,我只是想知道是不是每个人都可以阅读这个?例如,VSIX可以使用另一个扩展或IDE本身存储的凭据?我宁愿避免这种情况。Undercover,它使用ProtectedData类,所以是的,当然,用户可以读取存储在这里的所有设置。除了使用自己的密钥和系统之外,没有其他方法可以解决这个问题。即使在这种情况下,这也取决于您寻求的保护级别。这与VSIX、Visual Studio甚至Windows无关。问题将变成“如何在计算机上安全地存储凭证”?理论上,你不能。“如果我能跑,我就能破解它。”西蒙穆里尔和达米安·克拉斯我很抱歉来到这里寻求帮助,但如果你能分享你的知识,我将不胜感激。谢谢,lotIt是一种解决方案,但需要额外的包保存到VSIX中,如果我们有强名称程序集,我们需要签署第三方程序集。(强名称程序集是VSIX和VSPackage的默认配置)如果您不想将凭据公开给Windows系统中的其他程序,这也不是最好的方法。此软件包未维护,代码不可用。源代码可从Codeplex!的zip下载!?