【问题标题】:how do i use couchbase lite session to authorize nodejs app?我如何使用 couchbase lite 会话来授权 nodejs 应用程序?
【发布时间】:2016-08-21 17:39:01
【问题描述】:

我在一个带有同步网关和服务器中的 couchbase 的 android 应用中使用 couchbase lite,效果很好。

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

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

【问题讨论】:

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


    【解决方案1】:

    您是在询问授权。这与身份验证相关,但您应该确保区分两者。听起来您想要的是对用户进行身份验证,然后让您的节点片基于此授权访问。

    话虽如此,这在一定程度上取决于您用于建立会话的身份验证类型。

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

    在身份验证流程中,OpenID Connect 可能会提供一些可能的方法来执行此操作。

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

    另一种方法是进行一种双重重定向。 (我认为这可行,但我没有尝试过。我找不到关于授权代码是否可以使用两次的文档。)在授权流程中,让重定向转到节点应用程序。然后让节点应用程序再次重定向到同步网关。两个应用程序都可以请求 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)。

    【讨论】:

      【解决方案2】:

      注意:您不能在 Sync Gateway 使用的存储桶上使用 Couchbase Node.js SDK,否则它将与 _sync 元数据混淆,并且文档将无法正确同步;但您可以使用 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

      【讨论】:

      • 感谢您的回答,但这不是我要问的。我想从我的 android 设备连接到 node.js,假设只是为了打印“hello world”。但我只希望拥有同步网关有效会话的人打印它。这样,我可以重用 SG 会话以允许访问其他组件(例如 elasticsearch),而无需创建另一个会话。希望它更清楚。
      猜你喜欢
      • 2020-04-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多