在多个Windows Store应用程序之间共享Windows凭据(Win 10)

时间:2018-08-14 14:03:35

标签: c# uwp windows-10

详细信息:

  • 目标版本:Windows 10 1803
  • 最低版本:Windows 10 Creators Update
  • nuget:Microsoft.NETCore.UniversalWindowsPlatform v6.1.5

我有两个示例Uwp应用程序。两者都有使用休闲方法:

private string GetPasswordCredential()
{
    PasswordVault passwordVault = new PasswordVault();
    PasswordCredential passwordCredential = null;

    try
    {
        var passwordCredentials = new List<PasswordCredential>(passwordVault.RetrieveAll());
        if (passwordCredentials.Any(c => c.Resource.Equals("testResource") && c.UserName.Equals("testUserName")))
        {
            passwordCredential = passwordVault.Retrieve(resource: "testResource", userName: "testUserName");
        }
    }
    catch (Exception exception)
    {
        var message = exception.Message;
    }

    if (passwordCredential == null)
    {
        // create credential deteils
        passwordCredential = new PasswordCredential(resource: "testResource", userName: "testUserName", password: "testPassword");

        // add credential details to password vault
        passwordVault.Add(passwordCredential);
    }

    return passwordCredential.Password;
}

问题在于,该方法为每个应用程序创建唯一的凭据: enter image description here

我的目的是创建一个凭据详细信息(如果不存在),并在第二个应用程序运行后也由第二个应用程序使用。上面的方法逻辑会进行检查,但还会为每个App创建全新的凭据。唯一的区别是我可以看到“保存者”部分。 如何强制第二个App抢夺/使用已存在的凭据?

1 个答案:

答案 0 :(得分:2)

  

如何强制第二个App抢夺/使用已存在的凭据?

不能。 offical documentation的事实很清楚,““ [由PasswordVault类表示的储物柜的内容是特定于应用程序或服务的。应用程序和服务无权访问与以下内容关联的凭据:其他应用或服务。”。

因此App2无法访问App1创建的证书,反之亦然。这是设计使然。