2016-08-21 4 views
0

J'utilise couchbase lite dans une application Android avec passerelle de synchronisation et couchbase dans le serveur et cela fonctionne très bien.Comment utiliser la session couchbase lite pour autoriser l'application nodejs?

Maintenant, je veux faire une demande à node.js à partir de l'application Android, et je veux utiliser la même session pour autoriser l'utilisateur dans l'application node.js.

Est-ce possible? Puis-je lire la session dans un nœud et la faire correspondre avec couchbase?

Répondre

0

Note: Vous ne pouvez pas utiliser le SDK Couchbase Node.js sur le seau qui est utilisé par la passerelle Sync sinon il gâchera avec les métadonnées _sync et les documents ne seront pas synchronisés correctement; mais vous pouvez interroger des documents, créer des sessions, etc. à l'aide de l'API REST Sync Gateway.

Vous pouvez consulter la documentation de l'API REST de Sync Gateway pour obtenir la liste des points de terminaison disponibles. Et si vous ne voulez pas déployer votre propre wrapper HTTP, une bibliothèque JS est disponible qui s'exécute sur Node.js et dans le navigateur: http://developer.couchbase.com/documentation/mobile/1.3/develop/guides/sync-gateway/rest-api-client/index.html.

+0

merci pour la réponse, mais ce n'est pas ce que je demande. Je veux me connecter de mon appareil Android à node.js, disons juste pour imprimer "Bonjour tout le monde". mais je ne veux que les gens qui ont une session de synchronisation de passerelle valide pour imprimer cela. De cette façon, je peux réutiliser la session SG pour permettre l'accès à d'autres composants (elasticsearch par exemple), sans créer une autre session. J'espère que c'est plus clair. –

1

Vous posez des questions sur l'autorisation. Ceci est lié à l'authentification, mais vous devez vous assurer de faire la distinction entre les deux. Il semble que ce que vous voulez est d'authentifier l'utilisateur, puis laissez votre pièce de noeud autoriser l'accès sur cette base. Cela dit, cela dépend du type d'authentification que vous utilisez pour établir votre session.

L'authentification de base (lorsqu'elle est utilisée directement avec Sync Gateway) transmet simplement un nom d'utilisateur et un mot de passe qui sont vérifiés. Je pense que vous obtenez un cookie de session après cela. Il serait très difficile de l'utiliser pour s'authentifier sur autre chose (comme dans, vous devrez modifier vous-même le code de Sync Gateway). OpenID Connect, dans le flux d'authentification, peut fournir plusieurs façons de le faire.

Une manière plus simple consiste à faire en sorte que l'application de nœud authentifie également l'utilisateur. Si cela a traversé le même navigateur, le navigateur conservera souvent l'état qui permettrait à l'utilisateur de contourner la ré-authentification. Cela pourrait être un peu maladroit, parce que vous auriez à passer des choses à un navigateur (ou un webview, mais il y a aussi des problèmes de sécurité), que l'utilisateur remarquerait probablement.

Une autre approche consisterait à faire une sorte de double redirection. (Je pense que cela fonctionnerait, mais je ne l'ai pas essayé.Je ne peux pas trouver de documentation sur si un code d'autorisation peut être utilisé deux fois.) Dans le flux d'autorisation, avoir la redirection aller à l'application de noeud. Ensuite, redirigez l'application de nœud vers Sync Gateway. Les deux applications peuvent demander le jeton d'identification. Une autre solution consisterait à demander directement à votre application Android le jeton d'identité et à le transmettre de manière protégée à votre application de nœud. Comme toujours, vous devez vous protéger contre les attaques par répétition, et je ne suis pas sûr de quoi d'autre, donc cela pourrait être difficile. Dans tous les cas, Sync Gateway est conçu pour demander le jeton d'identification lui-même, donc toute approche devra demander le jeton d'identification deux fois.

Voici quelques références que vous pouvez consulter pour approfondir vous-même cette question.

http://connect2id.com/learn/openid-connect - Une belle description du protocole OpenID Connect. https://developers.google.com/identity/protocols/CrossClientAuth - La documentation de Google Identity Provider traitant de l'autorisation de partage entre une application mobile et une application Web. http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html - Un article décrivant la distinction entre l'authentification et l'autorisation, et pourquoi OpenID Connect (et non OAuth) devrait être utilisé lors d'une authentification.