Authentifier l'application mobile native à l'aide d'une API REST

16

Je démarre bientôt un nouveau projet, qui cible les applications mobiles pour toutes les principales plateformes mobiles (iOS, Android, Windows). Ce sera une architecture client-serveur.

L'application est à la fois informative et transactionnelle. Pour la partie transactionnelle, ils doivent avoir un compte et se connecter avant qu'une transaction puisse être effectuée. Je suis nouveau dans le développement mobile, donc je ne sais pas comment se déroule la partie authentification sur ces plateformes. Les clients communiqueront avec le serveur via une API REST. Utilisera bien sûr HTTPS.

Je n'ai pas encore décidé si je veux que l'utilisateur se connecte lorsqu'il ouvre l'application, ou uniquement lorsqu'il effectue une transaction.

J'ai eu les questions suivantes:

1) Comme l'application Facebook, vous ne saisissez vos informations d'identification que lorsque vous ouvrez l'application pour la première fois. Après cela, vous êtes automatiquement connecté à chaque fois que vous ouvrez l'application. Comment accomplit-on cela? Tout simplement en chiffrant et en stockant les informations d'identification sur l'appareil et en les envoyant à chaque démarrage de l'application?

2) Dois-je authentifier l'utilisateur pour chaque demande (transactionnelle) adressée à l'API REST ou utiliser une approche basée sur des jetons?

N'hésitez pas à suggérer d'autres moyens d'authentification.

Merci!

Supercell
la source

Réponses:

14

Vous transmettez le nom d'utilisateur / mot de passe à la méthode de connexion de votre API RESTful et elle renvoie le jeton d'accès. Ce jeton d'accès n'est qu'une chaîne unique (pour le système).

L'appareil stocke (persiste) ce jeton d'accès. Chaque fois que vous envoyez une demande RESTful au serveur, vous placez ce jeton d'accès dans l'en-tête de la demande HTTP. Le serveur trouve l'utilisateur par jeton d'accès et, en cas de succès, répond à la demande.

le nom d'utilisateur / mot de passe ne doit pas être enregistré sur l'appareil.

c-sourire
la source
Est-il possible pour des tiers (pirates, etc.) de mettre la main sur le jeton d'accès?
Supercell
C'est possible bien sûr. Surtout si vous n'utilisez pas HTTPS. La plupart des clients de messagerie en ligne vous demandent de vous reconnecter de temps en temps. Le jeton a un délai d'expiration fixé à deux semaines par exemple. Donc, une fois toutes les deux semaines, vous devrez vous reconnecter.
c-smile
Comment le jeton d'accès sera généré et le jeton d'accès sera-t-il enregistré sur le serveur.
Ghyath Serhal
@ c-smile Facebook ne m'a jamais demandé de me reconnecter. Par conséquent, je ne vois pas vraiment la différence entre un mot de passe et un jeton d'accès.
Mickael Marrache
je sais que c'est assez tard. mais Facebook et d'autres fournisseurs émettent un jeton d'actualisation, un jeton d'accès et une heure d'expiration (pour le jeton d'accès) au moment de la connexion. le jeton d'accès est de courte durée et un nouveau jeton d'accès peut être généré à l'aide du jeton d'actualisation. La prochaine connexion peut créer un nouveau jeton d'actualisation, rendant l'ancien invalide
Cerlin