2011-04-23 4 views
7

Je sais que je peux définir les valeurs à 'MODE_PRIVATE' et seulement mon application/userId pourra y accéder, cependant, est-il possible pour l'utilisateur d'y accéder à tout moment? Alors est-il "sûr" de les stocker dans les préférences partagées, ou y a-t-il un meilleur endroit?Coffre-fort pour stocker les jetons d'accès/actualisation Oauth2 dans les préférences partagées d'Android?

En outre, si je décide plus tard d'exposer certaines préférences pour le réglage par l'utilisateur, serais-je capable de cacher ces valeurs?

Merci.

Editer: Je connais également le stockage interne, mais je me demande si je peux réaliser quelque chose de plus simple avec les préférences partagées.

Répondre

3

Les préférences partagées sont simplement un fichier XML en texte brut stocké dans le dossier de données de l'application. Ce n'est pas un endroit sûr, par tous les moyens. Il est assez facile d'afficher ces fichiers et d'extraire les jetons. Vous pouvez toujours utiliser les préférences partagées, mais vous devez crypter les informations que vous stockez. Quant à "Stockage interne", ceux-ci partagent le même emplacement avec les "Préférences partagées", de sorte qu'ils sont toujours faciles à voir.

Vos données non cryptées sont à l'abri des autres applications exécutées sur le téléphone, mais pas des utilisateurs malveillants.

2

Si vous voulez montrer certaines préférences à l'utilisateur, vous n'aurez pas à vous soucier de leur apparition. Je pense que shared_preferences serait probablement l'endroit le plus sûr pour stocker ces choses. Sauf si l'utilisateur a un téléphone enraciné et qu'ils donnent à une application malveillante la permission d'aller lire vos fichiers de données, il n'y a rien à craindre pour autant que je sache. Bien que j'ai hâte d'autres réponses. étoilé!

2

Même si vous stockez des jetons d'accès à l'emplacement sécurisé sur l'appareil, vous devriez penser qu'il peut être révélé. C'est pourquoi vous ne devriez pas avoir de secret client dans votre code d'application mobile. Pour les jetons d'accès, vous pouvez essayer de les sécuriser, mais vous ne pouvez pas le sécuriser à 100%. Vous ne devriez donc pas avoir d'étendues inutiles ou de jetons de durée de vie inutilement longs.

ps. En général, l'appareil mobile utilise "response_type = token (implicit grant)" et il ne devrait pas recevoir de jetons d'actualisation. Cela dépend de la politique du serveur d'authentification si ..

+0

Merci pour l'aide. Le protocole oauth2 que nous utilisons nécessite l'utilisation de jetons d'actualisation ainsi que des jetons d'accès classiques. Le problème est que nous devons les stocker * quelque part * sur le périphérique, car il doit être persistant entre les sessions et l'application ne peut pas les stocker. – Igor

+0

La spécification OAuth2 requiert des périphériques mobiles (tous les clients ne pouvant pas avoir de secret client) de ne pas utiliser les jetons d'actualisation. Si le serveur OAuth2 que vous utilisez l'exige, cela signifie que le serveur ne prend pas en charge de tels clients. –

+0

Pouvez-vous fournir un lien vers ceci? Je regarde: http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.4 et il dit que le refresh_token est optionnel – Igor

Questions connexes