/ / OAuth2 subvention pour l'interaction entre mon application angulaire et mon API REST? - angularjs, symfony, oauth, oauth-2.0

Une subvention OAuth2 pour l’interaction entre mon application Angular et mon API REST? - angularjs, symfony, oauth, oauth-2.0

Aidez-moi à choisir le type de subvention OAuth2 approprié pour mon application Angular et mon API REST?

UX-sage je veux juste un formulaire de connexion sur monfront-end, qui demanderait un nom d'utilisateur / un passe (pas de dialogue demandant des permissions). Je pense que la "subvention de propriétaire de ressources (mot de passe)" est la plus appropriée pour moi (puisque je contrôle les serveurs frontaux et principaux), mais je ne sais pas comment gérer l’actualisation du jeton d’accès.

Corrigez-moi si je me trompe à propos du flux:

  • Lorsque l'utilisateur envoie ses informations d'identification via un formulaire de connexion, access token est retourné
  • Je peux stocker ce jeton dans LocalStorage faire des demandes Ajax ultérieures avec elle.
  • Tel que je le comprend access tokens devrait être de courte durée. Et devrait être mis à jour avec Refresh token. Si le refresh token être retourné avec le access token après la connexion initiale et également stocké sur le client? Si non, quelle est l'alternative?
    • Devrait-il y avoir une session maintenue sur le serveur pour invoquer access token rafraîchir? ou je devrais faire des appels de front-end pour actualiser la access token quand il est sur le point d'expirer. Mais alors j'ai besoin d'un refresh token sur le front-end, non?

Comme vous le voyez il y a un désordre dans ma tête à propos de refresh token. Ce serait formidable d'avoir des éclaircissements ou des suggestions pour une autre mise en œuvre de la subvention.


La technologie d’arrière-plan n’est pas pertinente ici, mais au cas où c’est Symfony2 avec FOSOAuthServerBundle.

Réponses:

0 pour la réponse № 1

Lorsque vous appelez le point de terminaison TOKEN (pour tous les types grant_type) sur un serveur OAuth, vous obtenez un access_token mais également d'autres informations (je pense qu'il y en a toutes ici):

{
access_token: // your short-lived token
expires_in: // number of seconds before the access_token is invalid
token_type: // the type of the access_token
scope: // scopes of the access_token
refresh_token: // long-lived token to get a new access_token
}

Vous avez besoin, à mon avis, de toutes ces informations(peut-être que la portée est inutilisée, mais toutes les autres seront utilisées plus tard). Vous devez stocker le paramètre access_token pour pouvoir effectuer des appels d'API. Après quelques secondes, votre access_token ne fonctionnera plus. Vous devrez en obtenir un nouveau. Vous pouvez demander à l'utilisateur de vous connecter à nouveau ou utiliser le paramètre refresh_token.

Vous devrez appeler le serveur OAuth au numéroTOKEN endpoint mais avec un grant_type: refresh_token. Vous devrez fournir le refresh_token de la première demande (entre autres informations) et en retour, vous obtiendrez la même réponse que ci-dessus. En fait, je pense que vous devrez le faire chaque fois qu'un access_token est expiré. À mon avis, le côté serveur ne sait rien des sessions ou des utilisateurs connectés. Il connaît les access_token valides et invalides.

C'est OAuth. Si vous ne voulez pas avoir à actualiser à chaque fois, vous pouvez créer un access_token de longue durée (en définissant le paramètre expires_in), je pense que c'est la seule solution qui fait sens dans un contexte OAuth.

Avez-vous besoin de précisions sur OAuth en général?