Mise en œuvre d'une API RESTful d'Authentification à l'aide de jetons (Yii/Yii2)

Je fais construire une API dans Yii 1.x qui sera utilisé avec une application mobile. Une partie du processus consiste en une connexion (avec un nom d'utilisateur et mot de passe) à l'aide de la suite de JSON demande ci-dessous:-

//Demande envoyée avec un nom d'utilisateur & mot de passe

{
"request" : {
    "model" : {
        "username" : "bobbysmith",
        "password" : "mystrongpassword"
    }
  }
}

//Si connecté avec succès, en retour, la réponse suivante

{
"response": {
    "code": 200,
    "message": "OK",
    "model": {
        "timestamp": 1408109484,
        "token": "633uq4t0qdtd1mdllnv2h1vs32"
    }
 }
}

Ce jeton est assez important - une fois qu'un utilisateur est connecté sur l'application que je voudrais qu'ils aient accès à d'autres pages, qui les obligent à être connecté. Je veux de l'application mobile pour stocker ce jeton & si le même 633uq4t0qdtd1mdllnv2h1vs32 jeton se trouve dans toute les demandes ultérieures d'accepter cela comme étant une demande authentifiée (pour cet utilisateur 'bobbysmith').

Je suis un peu incertain de la meilleure façon d'aller à ce sujet, j'ai fait quelques recherches et peut oAuth a été mentionné à quelques reprises, le long de avec l'Authentification de Base via le protocole HTTPS.

Donc, en un mot ce...

  1. Sur l'application mobile de la page d'accueil, l'utilisateur se connecte correctement avec leur nom d'utilisateur & mot de passe & il envoie une requête à l'API.
  2. Cela renvoie une réponse positive (illustré ci-dessus) avec le timestamp actuel & le jeton.
  3. Le même utilisateur accède à une autre page de l'application/point de vue où ce jeton est un) et b) si elle correspond à ce authentifie l'utilisateur (e.g, de sorte qu'ils peuvent modifier ce compte etc..)
  4. Une fois que l'utilisateur clique sur "Déconnexion" ce jeton est ensuite retiré (et il ne peut plus accéder à Mon Compte etc..) - essentiellement un jeton d'authentification basée sur le système.

Quelqu'un peut peut-être expliquer la meilleure façon d'atteindre cet objectif? S'il vous plaît laissez-moi savoir si ce que j'ai dit n'est pas 100% clair et je vais vous donner plus d'informations.

Alors que je suis à l'aide de PHP, un Yii 1.x solution est l'idéal, car c'est ce que l'API actuelle est construite à l'aide.

En un mot, l'application s'assure que toutes les demandes de serveur contient un jeton de la charge ou de tête afin que ce jeton peut être récupérée sur chaque poste après, une fois déconnecté, ce jeton est tout simplement supprimé OU mis à null/vide

InformationsquelleAutor Zabs | 2014-08-15