如何使用PasswordCredential存储或关联其他数据?

时间:2018-02-04 20:17:09

标签: c# security uwp credentials

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

UWP的凭证储物柜似乎可以安全地存储凭证部分,用户名和密码。它也与用户漫游,我可以忍受其10个凭据存储限制(github issue #2411)。遗憾的是,似乎并不是一种使用唯一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需要用户名,资源字符串和密码。虽然我可以使用用户名检索凭据,但不能保证其唯一性。虽然资源密钥是唯一的,但是它不清楚它是否标识了实际的凭证或其容器。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

不同的应用程序使用不同的方法。有些应用只有AppName这样的资源名称,然后使用UserName来存储不同类型的"键",因此它们有AccessKeyPassword

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

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