J’ai suivi avec attention le cours de Maxime sur Vapor et notamment la partie sensible de l’authentification avec Token.
J’ai réalisé un petit webservice qui semble fonctionnel.
Là ou je galère, c’est du coté App iOS . J’ai créé une fonction pour envoyer à Vapor (et Fluent) un nouvel utilisateur (avec nom, email et password).
J’arrive à vérifier avec Paw que la création se fait bien, donc jusque là tout va bien…
Là ou je galère depuis plusieurs jours, c’est pour comprendre:
1- comment je récupère le token généré dans Vapor lors de la création de l’utilisateur ?
2- où je l’enregistre dans mon App iOS ?
3- comment je le fais parvenir à mon webservice (à l’aide d’une fonction « login » par exemple) lors dune nouvelle connexion de l’utilisateur ?
Si quelqu’un peut m’éclairer sur ces questions plutôt axées frontend pour le coup.
Bonjour,
Tu devrais utiliser au maximum PAW pour bien comprendre les HTTP request et HTTP response.
Et cela pour la partie login, ou bien envoi du Token, récupération du Token.
Une fois que tu arrives à faire tout cela, tu peux plus facilement jouer avec dans ton appli.
Cela dépend comment tu as programmé ton webservice. Par exemple, une fois que tu as réussi le login, ton webservice peut te renvoyer le Token généré. Pour le stockage, si dans ton Appli tu as aucune BDD, tu peux le mettre dans tes Userdefaults. ce n’est pas très Secure mais te permet d’avancer.
L’intérêt du Token c’est de ne pas d’embêter avec le login. Mais il faut que tu aies cette logique là côté backend. user+token valid et tu acceptes et établit le dialogue.
Voilà, j’espère que cela va t’aider un peu
Merci de ta réponse. Cela reste encore un peu flou pour moi, mais je vais continuer mes recherches et expérimentations.
Concernant la sauvegarde du Token, je pensais bien le stocker dans mes Userdefaults, mais tu dis que ce n’est pas très secure. Tu crées donc une base de données style core data ou Realm pour stocker les Tokens ?
Merci pour ton aide.
Je disais cela si tu fais une application commerciale. Si c’est en perso tu t’en fiches. Ne va pas créer un realm esprès si tu n’as pas le besoin. Le pas Secure c’est théorique. C’est si l’iPhone SE faisait pirater. ou alors, tu peux le crypter / décrypter aussi.
@Behache Le schéma montre bien la logique que Maxime utilise. Le client s’authentifie avec un login et mot de passe une première fois.
Il reçoit un code garantissant ça bonne authentification et renvoi le code au même serveur pour qui lui fournit un jeton.
Et seulement à partir de là, il peut utiliser le jeton pour récupérer des ressources.
Mais, si tu lis l’article de Wikipédia, tu comprendras mieux comment ça fonctionne.
Après comme dit, ça permet de sécuriser les identifiants du client en ne les envoyant pas à chaque requête sur le réseau et ainsi éviter une interception par une tierce personne.
Par contre, c’est bien à toi de sécuriser ce jeton, sauvegardé en local sur ton téléphone en le chiffrant.
Pour stocker ton token côté client, tu devrais utiliser le trousseaux sécurisé du système. C’est une vieille API en C… mais heureusement il existe des wrapper en swift et je crois que je l’avais montré dans l’ancien cours de Swift.
Par exemple tu as KeychainAccess qui est très simple à utiliser et te permettra de stocker le token en toute sécurité.
@ThonyF : si tu utilises de la crypto manuellement, j’ai peur que tu sortes du cadre legal des exception US concernant le chiffrement. Tu devras donc déclarer aux douanes US ce que tu fais comme chiffrement dans ton app.
@mbritto effectivement, j’ai oublié de préciser qu’il faut respecter la législation en vigueur aux USA, mais aussi dans le ou les pays ou vous distribuer votre application.
Et oui, le chiffrage étant considéré comme une arme de guerre, celle-ci est réglementée.