Partage
  • Partager sur Facebook
  • Partager sur Twitter

IONIC 3 ET ANGULAR 4 - Système d'authentification

    14 mai 2018 à 19:46:24

    Bonjour à tous, 

    Je développe actuellement une application mobile grâce au framework Ionic. Je n'ai d'expérience que le web avec HTML, PHP et JavaScript.

    Pour le moment, mon système de connexion à l'appli est très rudimentaire, ce n'en est pas un à proprement dit.

    J'envoie une requête POST depuis le fichier TypeScript de l'app, vers un fichier PHP hébergé sur serveur, puis celui-ci interroge ma base de données MySql, et enfin renvoie au TypeScript les données utilisateur (pseudo, mail, ...) sous forme d'objet, à condition que le mot de passe et le login correspondent.

    Ensuite, pour naviguer d'une page à l'autre, j'envoie l'objet contenant les infos utilisateur via NavParams. Puis chaque page recevant cet objet, s'appuie dessus pour faire de nouvelles requêtes à la base de données, toujours en POST HTTP depuis le TypeScript, afin d'afficher le contenu en fonction de l'utilisateur et de ses infos.

    Tout fonctionne très bien, mais c'est assez laborieux, surtout lorsque des infos sont mises à jour dans la base de données, cela nécessite tout un mic-mac (selon mes connaissances actuelles) de redirection et de re-requête pour avoir les nouvelles données mises à jour. De plus, je pose la question de la sécurité.

    En fouillant un peu partout sur le net, j'ai trouvé qu'une solution pratique et fiable, était d'utiliser un token d'authentification, tel que JWT.

    Je ne comprend pas bien son fonctionnement, et du coup son implémentation non plus. Je vois beaucoup l'utilisation de services/API tels que RestApi.

    Il y a aussi une histoire de serveur d'authentification différent d'un serveur webSocket... Euh... ? J'ai à ma connaissance seulement un serveur web PHP chez OVH. Est-ce problématique ?

    En somme, comment le token est-il créé ? Je me demande par-là s'il n'est pas possible de le créer soi-même via une fonction PHP dans un fichier sur le serveur, qui serait appelé avec une requête POST HTTP classique ? Et puis à chaque nouvelle page demandée/affichée dans l'appli, envoyer ce token pour vérification, également via une requête, vers un autre fichier PHP du serveur, et si le token est valide, alors on exécute le code de la page en question sans soucis.

    Par ailleurs, ce token, une fois reçu par l'utilisateur, où le stocke-t-on ? Je pourrais le faire passer d'une page à l'autre via NavParams, de la même manière qu'actuellement avec mon objet utilisateur, et alors l'utilisation du token, si je comprend bien, se limiterait à un hash des infos, au cas où les requêtes seraient interceptées par un tiers. J'ai vu aussi qu'on pouvait stocker ce token dans le storage de l'application, est-ce une bonne solution ? ce qui éviterait de faire transiter le token d'une page à l'autre, puisqu'on y aurait accès directement depuis chaque page de l'appli en 'natif' si je puis dire.

    Au final, quel est le meilleur moyen de procéder ? J'aime faire les choses moi-même, ne pas passer par des services annexes. J'entend par là m'affranchir des API qu'on trouve sur le net, dans le sens où, si là encore je ne dis pas de bêtises, je crée moi-même mes fichiers PHP qui ne servent qu'à renvoyer une réponse en fonction d'une requête POST HTTP reçue, ce qui je crois est le principe d'une API.

    J'attend vos retours avec impatience, car je tourne en rond, Google est devenu plus que mon ami, on commence à être intime, et pour autant, je ne trouve pas vraiment de réponse claire, nette, et précise. Ou alors, avec mon niveau actuel il y a beaucoup de choses que je ne comprend pas bien, et j'ai l'impression d'être perdu parmi des dizaines de solutions, sans vraiment réussir à les comparer.

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      26 décembre 2019 à 10:53:24

      Dommage, qu'il n'y est pas eu de réponse... Ça m'intéresse aussi même 1 an après ^^'
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2020 à 21:55:14

        Salut,

        Les JWT (JSON Web Token) sont des token stockant des données au format JSON. C'est un standard de la RFC. Les bibliothèques implémentant le standard JWT sont listées sur le site https://jwt.io/.

        Le principe d'authentification habituel est d'utiliser le protocol OAuth 2.0 (aussi standardisé RFC). A la fin du processus d'authentification, un token JWT peut être émis (ou dans un autre format, le standard ne le précise pas). Ce token est ensuite généralement passé à une API REST afin de permettre l'accès (ou non) aux ressources. La pratique recommandée consiste à passer le token dans l'en-tête HTTP Authorization :

        Authorization: Bearer <token JWT>



        • Partager sur Facebook
        • Partager sur Twitter
        Don't be serious but do it seriously.

        IONIC 3 ET ANGULAR 4 - Système d'authentification

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown