Sécurité : comment stocker facilement des (petites) informations sensibles dans une application #Windows (#Phone) ?

Stocker des identifiants ou les credentials permettant d’accéder à des services webs est une fonctionnalité à laquelle nous faisons face sur la quasi totalité de nos projets. Cet article a pour vocation d’expliquer l’utilisation de l’API PasswordVault.

Cette API est apparue avec Windows 8.1 et elle est très simple d’utilisation. De plus, elle a l’avantage de synchroniser (roaming) les informations sur tous les devices de l’utilisateur.

 

Stockage des informations

Les identifants à stocker sont représentés par des objets “PasswordCredential” constitués de 3 informations :

  • Le nom de la ressource (site, API, archive, etc.) à laquelle vous accédez. Cette valeur est utilisée uniquement par vous comme clef de référence.
  • L’identifiant de l’utilisateur à stocker
  • Le mot de passe de l’utilisateur à stocker
public void SaveIdentifiants(string loginUser, string motDePasseUser){
    var pV = new PasswordVault();

    pV.Add(new PasswordCredential("MonService", loginUser, motDePasseUser));
}

Il n’y a pas besoin d’appeller de méthode “Save”, cela est fait automatiquement pour nous par le Framework.

 

Récupération des informations

Vous pouvez alors retrouver les identifiants par code plus tard en réutilisant le nom de la resource. Pour des raisons de sécurité, vous devez appeler la méthode “RetrievePassword” avant de pouvoir lire le mot de passe :

var pV = new PasswordVault();

var credentials = pV.RetrieveAll()
    .FirstOrDefault(c => "MonService".Equals(c.Resource, StringComparison.OrdinalIgnoreCase));

var identifiant = credentials.UserName;

credentials.RetrievePassword();
var motDePasse = credentials.Password;

 

Limitations des APIs

Bien sûr, il y a des limites : il n’est possible que de stocker 10 identifiants par application par utilsateur. Si vous dépassez cette limite, une exception sera levée (merci Arnaud pour l’info!).

De plus, il n’y a pas l’information précise dans la documentation mais il est possible de ne stocker qu’environ 16000 caractères (identifiant + mot de passe + nom de ressource). Je pense que cela est lié à la limite de taille des settings roamés.

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus