Nous développons des applications sociales pour mobile. Chaque application utilise les services Web de l'API RESTful. Lorsque j'implémente la connexion, je stocke généralement le nom d'utilisateur et le mot de passe quelque part sur l'appareil. Ensuite, je les envoie et en réponse, j'ai accès à mon profil. Mais je sais aussi qu'il existe une autre façon de procéder.
L'un génère en quelque sorte un jeton avec un algorithme particulier, puis l'envoie à la place du nom d'utilisateur et du mot de passe pour y accéder.
Comment dois-je mettre cela en œuvre? Dois-je envoyer ce jeton avec toute autre demande que la connexion?
Réponses:
Il existe plusieurs façons d'implémenter l' authentification dans un contexte RESTful, et il est plus sûr d'envoyer uniquement des jetons au lieu de login / mot de passe: vous pouvez facilement rendre les jetons invalides par timeout ou selon d'autres critères, et demander à l'utilisateur de se ré-authentifier .
Par exemple, les demandes d'authentification REST utilisant HMAC . Dans cette approche, le client disposera de clés publiques et secrètes . Pour toutes les demandes qui nécessitent une authentification , vous devez ajouter une clé publique et utiliser une clé secrète pour calculer le hachage de votre demande
Maintenant, le serveur peut identifier la demande par clé publique et calculer lui- même requestHash . Si les deux hachages sont égaux, l'utilisateur est autorisé.
Btw, vous devez également utiliser https pour sécuriser la communication sur un réseau informatique - cela réduira considérablement le nombre de problèmes possibles.
la source
oAuth est la norme pour cela, mais il existe d'autres solutions.
N'essayez pas de mettre en œuvre la sécurité, les jetons, etc. tout seul, car c'est un sujet difficile et risqué. Jetez par exemple un coup d'oeil ici:
/programming/4574868/securing-my-rest-api-with-oauth- while-still-allowing-authentication-via-third-pa
la source