【问题标题】:How do I store or associate additional data with a PasswordCredential?如何存储其他数据或将其他数据与 PasswordCredential 相关联?
【发布时间】:2018-02-05 05:45:39
【问题描述】:

我的 UWP 应用程序使用多个帐户登录到多个 Web 服务。每个都包含一个 URL、密码和用户名以及其他信息,例如开发人员密钥等。我希望将它们安全地存储为分配给 Windows 用户帐户的漫游设置。

UWP 的 Credential Locker 似乎可以安全地存储凭据部分、用户名和密码。它还与用户一起漫游,我可以忍受它的 10 个凭据存储限制 (Credential Locker) 不幸的是,似乎没有明确的方法可以使用唯一 ID 将其包含或关联到我的帐户:

//
//Add a credential to PasswordVault by supplying resource, username, and password
//
Windows.Security.Credentials.PasswordVault vault = new Windows.Security.Credentials.PasswordVault();
PasswordCredential cred = new PasswordCredential(InputResourceValue.Text, InputUserNameValue.Text, InputPasswordValue.Password);
vault.Add(cred);

PasswordVault 需要用户名、资源字符串和密码。虽然我可以使用用户名检索凭证,但不能保证它是唯一的。虽然资源密钥是唯一的,但不清楚它是标识实际凭证还是它的容器。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: c# security uwp credentials


    【解决方案1】:

    不同的应用程序为此使用不同的方法。有些应用程序只有一个资源名称,例如AppName,然后使用UserName 来存储不同类型的“密钥”,因此它们有AccessKeyPassword 等。

    另一种方法是使用不同的Resource 值,例如对于不同的身份验证提供程序,如AppName.FacebookAppName.Local 等,使用UserName 来表示密码或访问令牌的用户名和密码。

    最后 - 因为您不受存储在 Password 中的字符串类型的限制,您可以创建一个包含多个属性的复杂类型,例如在存储到密码库之前使用 JSON 对其进行序列化。这样,您可以通过单个条目存储更多信息。

    【讨论】:

    • 是的,这就是我采用的方法。鉴于每个服务都有一个与之关联的唯一名称,我将服务名称和用户名连接起来以创建一个唯一键。谢谢。
    猜你喜欢
    • 2017-10-20
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2018-12-02
    相关资源
    最近更新 更多