Dans la série “ comment sauvegarder un mot de passe sous Windows ”, attaquons nous aux applications Windows Store.

Tout comme les applications Windows “ classique ” on peut utiliser le Credential Manager. La différence est que cette fois, il y a une API, PasswordVault, utilisable directement en C# (ou JavaScript ou C++).

Le principe est le même, il faut passer par le triplet Nom de la ressource (ou nom de l’application), Nom d’utilisateur, Mot de passe. Trêve de bla bla, un peu de code :

Ajouter ou mettre à jour une entrée

var vault = new PasswordVault();
var credential = new PasswordCredential("Sample Application", "Gérald", "Pa$$w0rd");
vault.Add(credential);

Lire une entrée

var vault = new PasswordVault();
try
{
   var credential = vault.FindAllByResource(resourceName).FirstOrDefault();
   if (credential != null)
   {
   // le mot de passe n’est pas récupéré par la méthode FindAllByResource
   // On récupère donc toutes les info avec la méthode Retrieve
   return vault.Retrieve(credential.Resource, credential.UserName);
   }
}
catch (Exception)
{
   // Une exception est lancée lorsqu’aucun credential n’existe pour le nom de la ressource.
}
return null;

Supprimer une entrée

var vault = new PasswordVault();
try
{
   PasswordCredential passwordCredential = vault.Retrieve(resourceName, userName);
   vault.Remove(passwordCredential);
}
catch (Exception)
{
   // Une exception est lancée lorsqu’aucun credential n’existe pour le nom de la ressource.
}

Et bien sûr les entrées sauvegardées sont visibles dans le Credential Manager :

Credential Manager

Bonus : selon les paramètres de l’utilisateur, les credentials enregistrés seront partagés automatiquement entre les différentes machines. Par contre une application ne peut pas empêcher ce comportement.

Et voilà.