我如何使用couchbase lite会话授权nodejs应用程序?

时间:2016-08-21 17:39:02

标签: android node.js couchbase-lite couchbase-sync-gateway

我在Android应用中使用couchbase lite,在服务器中使用同步网关和couchbase,效果很好。

现在我想从android应用程序向node.js发出请求,我想使用相同的会话来在node.js应用程序中授权用户。

有可能吗? 我可以在节点中读取会话并将其与couchbase匹配吗?

2 个答案:

答案 0 :(得分:1)

你问的是授权。这与身份验证有关,但您应该确保区分这两者。听起来你想要的是对用户进行身份验证,然后让你的节点根据这个来授权访问。

话虽如此,这取决于您用于建立会话的身份验证类型。

基本身份验证(直接与Sync Gateway一起使用时)只传递要检查的用户名和密码。我想你之后会得到一个会话cookie。使用它来验证其他任何东西是非常困难的(例如,你必须自己修改同步网关代码)。

在auth流程中,OpenID Connect可能会提供一些方法来实现此目的。

一种更简单的方法是让节点应用程序也对用户进行身份验证。如果这是通过相同的浏览器流动,浏览器将经常保持允许用户绕过重新认证的状态。这可能有点笨拙,因为您必须将内容传递给浏览器(或webview,但也存在安全问题),用户可能会注意到这一点。

另一种方法是进行一种双重定向。 (我认为这样可行,但我没有尝试过。我找不到关于授权代码是否可以使用两次的文档。)在授权流程中,让重定向转到节点应用程序。然后让节点应用程序再次重定向到Sync Gateway。这两个应用都可以要求提供ID令牌。

另一种方法是让您的Android应用直接询问ID令牌,并以某种受保护的方式将其传递给您的节点应用。一如既往,你必须防止重播攻击,我不知道还有什么,所以这可能具有挑战性。

在任何情况下,Sync Gateway都是为了请求ID令牌本身而构建的,因此任何方法都需要两次请求ID令牌。

以下是一些您可以参考的参考资料,可以自己进一步研究。

http://connect2id.com/learn/openid-connect - 一个很好的OpenID Connect协议文章。 https://developers.google.com/identity/protocols/CrossClientAuth - Google身份提供商文档,用于解决移动应用和网络应用之间的共享授权问题。 http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html - 描述身份验证和授权之间区别的帖子,以及在需要身份验证时应该使用OpenID Connect(而不是OAuth)的原因。

答案 1 :(得分:0)

注意:您无法在Sync Gateway使用的存储桶上使用Couchbase Node.js SDK,否则会弄乱_sync元数据和赢得的文档& #39; t正确同步;但您可以使用Sync Gateway REST API查询文档,创建会话等。

您可以参考Sync Gateway REST API的文档以获取可用端点列表。如果您不想推出自己的HTTP包装器,可以在Node.js和浏览器中运行JS库:http://developer.couchbase.com/documentation/mobile/1.3/develop/guides/sync-gateway/rest-api-client/index.html