Arrière-plan:
C'est vraiment les meilleures pratiques de la question, mais quelques informations sur la situation spécifique pourrait être utile:
Nous développons une "connecté" de l'application pour l'iPhone. Il communique avec l'application backend via des services REST. Afin de ne pas avoir à inviter l'utilisateur à entrer un nom d'utilisateur et mot de passe à chaque lancement de l'application, nous allons exposer un "Login" de service qui valide leur nom d'utilisateur et mot de passe sur le lancement initial et renvoie un jeton d'authentification qui peut être utilisé pour de futures demandes de service web pour les données réelles. Le jeton peut avoir un délai d'expiration après laquelle nous allons leur demander de se ré-authentifier avec leur nom d'utilisateur/mot de passe.
La Question:
Quelles sont les meilleures pratiques pour la génération de ce type de jeton à utiliser pour l'authentification?
Par exemple, nous pourrions...
- Table de hachage (SHA-256, etc) une chaîne de caractères aléatoires et de le stocker dans la base de données pour l'utilisateur avec une date d'expiration. Faire une recherche simple de l'jeton sur les requêtes suivantes pour vous assurer qu'il correspond.
- Encrypte l'id de l'utilisateur et des informations supplémentaires (timestamp, etc) avec une clé secrète. Décrypter le pion à des demandes ultérieures assurez-vous qu'il a été émis par nous.
Cela se sent comme il doit être un problème résolu.