web-dev-qa-db-fra.com

Android: Enregistrement du nom d'utilisateur et du mot de passe?

Si je veux stocker le nom d'utilisateur et le mot de passe à utiliser dans une application Android, quelle est la meilleure façon de le faire? Est-ce à travers l’écran des préférences (mais que se passe-t-il si l’utilisateur ne le voit pas?) Ou une boîte de dialogue et demande-lui les informations d’identité? Si c'est le cas, je dois conserver l'état pour l'application. Comment je ferais ça?

170
Legend

La plupart des applications Android et iPhone que j'ai vues utilisent un écran initial ou une boîte de dialogue pour demander des informations d'identification. Je pense qu'il est fastidieux pour l'utilisateur de devoir ressaisir son nom/mot de passe souvent, donc stocker ces informations est logique du point de vue de la convivialité.

Le conseil de ( Android dev guide ) est le suivant:

En général, nous recommandons de minimiser la fréquence des demandes d'informations d'identification de l'utilisateur afin de rendre les attaques de phishing plus visibles et moins susceptibles de réussir. Utilisez plutôt un jeton d'autorisation et actualisez-le.

Dans la mesure du possible, le nom d'utilisateur et le mot de passe ne doivent pas être stockés sur l'appareil. Au lieu de cela, effectuez l'authentification initiale en utilisant le nom d'utilisateur et le mot de passe fournis par l'utilisateur, puis utilisez un jeton d'autorisation de courte durée, spécifique au service.

L'utilisation de AccountManger est la meilleure option pour stocker les informations d'identification. Le SampleSyncAdapter fournit un exemple d'utilisation.

Si cela ne vous convient pas pour une raison quelconque, vous pouvez utiliser des informations d'identification persistantes à l'aide du mécanisme Préférences . D'autres applications ne pourront pas accéder à vos préférences, de sorte que les informations de l'utilisateur ne sont pas facilement exposées.

110
elevine

Je pense que le meilleur moyen de sécuriser vos identifiants est d’abord de penser à stocker le mot de passe avec cryptage dans le fichier account.db, qui ne pourrait pas être facilement disponible sur des appareils non-rootés. il.

Une autre option est de faire toute votre authentification, comme le fait Gmail. après la première authentification auprès du serveur Gmail. vous avez le jeton d'authentification que vous utiliseriez avec votre mot de passe. Ce jeton serait stocké en texte brut. Ce jeton pourrait être faux si vous changez le mot de passe de Serveur.

la dernière option, je vous recommande d'activer l'authentification à 2 facteurs et de créer un mot de passe spécifique à l'appareil pour votre appareil. Après avoir perdu votre appareil, il vous suffit de le désactiver.

8
Riz

Vous devez utiliser Android AccountManager . Il est spécialement conçu pour ce scénario. C'est un peu fastidieux, mais l'une des choses qu'il fait est d'invalider les informations d'identification locales si la carte SIM change. Par conséquent, si quelqu'un glisse votre téléphone et y insère une nouvelle carte SIM, vos informations d'identification ne seront pas compromises.

Cela donne également à l'utilisateur un moyen rapide et facile d'accéder (et éventuellement de supprimer) les informations d'identification stockées pour n'importe quel compte qu'il possède sur le périphérique, le tout à partir d'un seul endroit.

SampleSyncAdapter (comme @Miguel mentionné) est un exemple qui utilise les informations d'identification du compte stocké.

8
Jon O

Examinez Quel est le moyen le plus approprié de stocker les paramètres utilisateur dans l'application Android si vous souhaitez enregistrer les mots de passe sous forme de texte clair dans SharedPreferences.

3
emmby

Celles-ci sont classées par ordre de difficulté afin de casser vos informations cachées .

  1. Stocker en texte clair

  2. Store crypté en utilisant une clé symétrique

  3. Utilisation du fichier de clés Android

  4. Stocker crypté à l'aide de clés asymétriques

source: Où est le meilleur endroit pour stocker un mot de passe dans votre application Android

Le magasin de clés lui-même est chiffré à l’aide du code PIN/mot de passe lockscreen de l’utilisateur. Par conséquent, lorsque l’écran du périphérique est verrouillé, le magasin de clés est indisponible. Gardez cela à l'esprit si vous avez un service en arrière-plan qui pourrait avoir besoin d'accéder aux secrets de votre application.

source: tilisez simplement le fichier de clés Android pour stocker les mots de passe et autres informations sensibles

2
Dmytro Melnychuk

Jetez un coup d'œil à cette publication de développeurs Android qui pourrait contribuer à renforcer la sécurité des données stockées dans votre application Android.

tilisation de la cryptographie pour stocker les informations d'identification en toute sécurité

2
dwbrito

Vous pouvez également consulter l'exemple SampleSyncAdapter du kit SDK. Cela peut vous aider.

2
miguelv

Avec le nouveau matériel d'empreinte digitale et l'API (Android 6.0), vous pouvez le faire comme dans l'exemple d'application this github.

2
Zlatko

L'info sur http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html est assez pragmatique, mais "utilise-caché-Android-apis" approche basée. C'est quelque chose à prendre en compte lorsque vous ne pouvez vraiment pas vous empêcher de stocker les informations d'identification/mots de passe localement sur le périphérique.

J'ai également créé un résumé épuré de cette idée sur le site https://Gist.github.com/kbsriram/5503519 , ce qui pourrait être utile.

1
kbs