Si je souhaite 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 via l'écran des préférences (mais que se passe-t-il si l'utilisateur manque cela?), Ou affiche-t-il une boîte de dialogue et demande à l'utilisateur les informations d'identification? Si tel est le cas, je dois maintenir l'état de l'application. Comment ferais-je cela?
android
authentication
storage
credentials
Légende
la source
la source
Réponses:
La plupart des applications Android et iPhone que j'ai vues utilisent un écran ou une boîte de dialogue initial pour demander des informations d'identification. Je pense qu'il est fastidieux pour l'utilisateur de devoir saisir à nouveau son nom / mot de passe souvent, il est donc logique de stocker ces informations du point de vue de la convivialité.
Le conseil du ( guide de développement Android ) est:
L'utilisation de AccountManger est la meilleure option pour stocker les informations d'identification. Le SampleSyncAdapter fournit un exemple de son utilisation.
Si ce n'est pas une option pour vous pour une raison quelconque, vous pouvez revenir aux informations d'identification persistantes à l'aide du mécanisme Préférences . Les autres applications ne pourront pas accéder à vos préférences, les informations de l'utilisateur ne sont donc pas facilement exposées.
la source
AccountManager
(selon ma réponse, et @ Miguel de manière détournée) et que quelqu'un met la main sur votre téléphone GSM, il devra continuer à utiliser votre carte SIM pour avoir accès à vos comptes, car cela invalidera les informations d'identification stockées lorsque la carte SIM change.Vous devez utiliser le AccountManager Android . Il est spécialement conçu pour ce scénario. C'est un peu encombrant, mais l'une des choses qu'il fait est d'invalider les informations d'identification locales si la carte SIM change, donc si quelqu'un glisse votre téléphone et y jette 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 tout compte qu'ils ont sur l'appareil, le tout à partir d'un seul endroit.
SampleSyncAdapter (comme @Miguel mentionné) est un exemple qui utilise les informations d'identification de compte stockées.
la source
Je pense que le meilleur moyen de sécuriser vos informations d'identification est de penser d'abord à stocker le mot de passe avec cryptage dans le fichier account.db qui ne pourrait pas être facilement disponible sur les appareils non rootés et en cas d'appareil rooté, le pirate doit avoir besoin de la clé pour déchiffrer il.
Une autre option est de faire toute votre authentification comme le fait Gmail. après la première authentification avec le serveur Gmail. vous avez le jeton d'authentification qui serait utilisé en cas de mot de passe. ce jeton serait stocké en texte brut. Ce jeton pourrait être faux si vous changez le mot de passe du serveur.
la dernière option que 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 l'appareil, tout ce dont vous avez besoin est de désactiver cet appareil.
la source
Jetez un œil à Quelle est la manière la plus appropriée de stocker les paramètres utilisateur dans l'application Android si vous êtes préoccupé par le stockage des mots de passe sous forme de texte clair dans SharedPreferences.
la source
Vous pouvez également consulter l' exemple SampleSyncAdapter à partir du SDK. Cela peut vous aider.
la source
Jetez un œil à cet article publié par les développeurs Android, qui pourrait aider à améliorer la sécurité des données stockées dans votre application Android.
Utilisation de la cryptographie pour stocker les informations d'identification en toute sécurité
la source
Avec le nouveau matériel et API d'empreintes digitales (Android 6.0), vous pouvez le faire comme dans cet exemple d'application github.
la source
Ceux-ci sont classés par ordre de difficulté pour casser vos informations cachées .
Stocker en texte clair
Stocker chiffré à l'aide d'une clé symétrique
Utilisation du keystore Android
Stocker chiffré à l'aide de clés asymétriques
source: où est le meilleur endroit pour stocker un mot de passe dans votre application Android
source: utilisez simplement le magasin de clés Android pour stocker les mots de passe et autres informations sensibles
la source
L'information sur http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html est une approche assez pragmatique, mais basée sur «utilise-hidden-android-apis». C'est quelque chose à prendre en compte lorsque vous ne pouvez vraiment pas stocker les informations d'identification / mots de passe localement sur l'appareil.
J'ai également créé un aperçu de cette idée sur https://gist.github.com/kbsriram/5503519 qui pourrait être utile.
la source