2012-12-02 1 views
3

Je travaille sur la création d'une application qui fournira l'authentification en utilisant le protocole OAuth2 pour servir les clients connus en utilisant la stratégie de l'application.Impossible de conserver une connexion permanente avec le fournisseur oauth2orize en utilisant ExpressJS

J'ai essayé d'utiliser les deux la oauth2orize et node-oauth2-provider modules, et je continue à obtenir le au même point:

  1. utilisateur se connecte via le client, api clé et api secrète sont vérifiées, et l'utilisateur peut se connecter avec succès via l'application de mon fournisseur.
  2. Après l'application cliente et l'authentification de l'utilisateur, un jeton est renvoyé à l'application cliente (l'utilisateur est connecté au client - yay!), Mais l'utilisateur est immédiatement déconnecté de l'application Provider. Je ne peux pas comprendre où, et pourquoi cela arrive - est-ce une caractéristique du protocole OAuth2?

Est-ce normal? Si j'utilise Facebook comme stratégie (pensez passport-facebook), alors si je me connecte à une application utilisant Facebook, je suis toujours connecté à Facebook quand je suis redirigé vers l'application - ce est le comportement que je veux fournir aux clients accéder à mon application.

Les deux modules Provider sont parfaits pour faire 90% de ce que je recherche, mais ni fournir la connexion "persistante" dans leurs exemples, oauth2orize, et node-oauth2-provider. Est-ce que je manque quelque chose?

Répondre

5

Euh, je pense que je l'ai eu.

Je courais à la fois le client et le serveur sur localhost, en utilisant différents ports - et les cookies/sessions se remplaçaient mutuellement. Donc, si l'application client express s'exécutait sur http://localhost:3000 et que le fournisseur oauth fonctionnait sur , la connexion au fournisseur oauth et la création d'une session sur le client écrasaient la session sur le fournisseur.

Solution (pour l'instant):

# /etc/hosts 
127.0.0.1 dev.client.com 
127.0.0.1 dev.oauth-provider.com 

Connexion à http://dev.client.com:3000 me prend à http://dev.oauth-provider.com:3001 et lorsqu'un utilisateur se connecte avec succès et une session est créée sur le client, le fournisseur est toujours connecté

+0

merci. Johnny! tu as sauvé des heures de me gratter la tête :) – matus

+0

Brilliant. Merci pour ça. (désolé pour le "merci" genre de commentaire ... mais c'est bien mérité) –

+0

Merci! Heureux que ça a aidé! – JohnnyCoder

Questions connexes