2017-10-12 3 views
1

J'ai un projet qui comprend une application web, une application mobile (Ionic 3) et un module API REST (sur HTTPS). Ma principale préoccupation est de mettre en œuvre une connexion sécurisée et la communication entre eux. Ci-dessous je détaille la solution que je choisis et je demande si elle est correcte et sécurisée.Comment sécuriser la communication entre l'application Ionic 3 et l'API personnalisée REST php?

Étapes à suivre:

  1. lors de la connexion dans l'application serveur retourne un JWT - Accès Token

  2. quand je l'appelle une fonction de l'API (sauf connexion) Je vais envoyer les paramètres suivants :

    • à l'intérieur de la tête: JWT AccesToken (stocké dans le stockage local)
    • à l'intérieur du corps: tout autre param nécess ary pour appeler les fonctions de l'API
  3. Dans chaque fonction de l'API REST, avant l'exécution, je vérifie si le jeton Access est valide.

jeton de validation:

a) si le jeton d'accès est valide, je continue à exécuter la fonction et retourner une valeur à l'application mobile

b) si le jeton d'accès est des moyens valides I 2 ont des sources d'erreur possibles:

  • b1) l'intégrité jeton d'accès est compromis -> la réponse retournée redirigent l'utilisateur de se connecter (cette façon, il n'a pas accès plus à l'application)
  • b2) le jeton d'accès a expiré -> Je crée un nouveau jeton d'accès avec la même charge utile mais avec une nouvelle validité. En même temps que je crée le nouveau jeton d'accès, je vérifie également le IdClient (IdClient est généré à partir de la charge utile Access Token) dans DB (si est actif, si a les mêmes droits pour accéder à l'API ...). Après cela, j'envoie ce nouveau jeton d'accès JWT à l'application mobile pour être utilisé et stocké.

De cette façon, je crois que je ne dois pas utiliser un jeton Refresh, même si l'accès Token je dispose d'une période de vie limitée

Est-ce correct et sécurisé ou suis-je manque quelque chose?

Merci!

Répondre

0

Oui, je ne vois aucun problème concernant la sécurité de votre application si vous implémentez le code token based authentication pattern (JWT) ci-dessus. Vous pouvez voir le même modèle où j'ai mis en œuvre sur l'une de mes application Ionic 3 en utilisant le lien ci-dessous.

Vous pouvez voir that implementation here.

Mais sur cette application, j'avais un développeur API de backend. J'ai donc consommé ce modèle d'API avec l'application frontend. Mais j'aimerais aussi avoir refresh token pattern. Pouvez-vous me dire pourquoi vous avez essayé d'éviter cela sur votre application?

+0

Je choisis de ne pas utiliser RefreshToken parce que je ne » sais comment rappeler la fonction après reciving une erreur d'expiration du jeton d'accès Pour Actualisez Token je dois faire: A) appeler SUM1: envoyer des variables et d'accès Token B) à l'intérieur FUNCTION1 : Je reçois l'erreur pour Acces Token expiration C) à l'intérieur FUNCTION1: J'envoie le rafraîchissement Token D) à l'intérieur de FUNCTION1: Je reçois le nouveau Token d'accès E) à l'intérieur de FUNCTION1: Je rappelle la fonction SUM1 de l'API REST pour le nouvel accès Token Toutes ces étapes doivent être effectuées dans FUNCTION1. Mais je ne sais pas comment. Peut-être utiliser RJx sur angular2, "retry/retrywhen" ... mais je n'ai lu qu'à leur sujet – Eventful