2016-08-21 62 views
0

我在服務器中使用同步網關和couchbase的android應用中的couchbase lite,它工作的很好。如何使用couchbase lite會話授權nodejs應用程序?

現在我想從android應用程序向node.js發出請求,並且我想使用同一個會話來授權node.js應用程序中的用戶。

可能嗎? 我可以在節點中讀取會話並將其與couchbase匹配嗎?

回答

0

注:不能對所使用的同步網關桶使用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

+0

謝謝你的答案,但那不是我要問的。我想從我的android設備連接到node.js,讓我們來打印「hello world」。但我只希望具有同步網關有效會話的人員打印該文件。這樣,我可以重新使用SG會話來允許訪問其他組件(例如elasticsearch),而無需創建另一個會話。希望更清楚。 –

1

您在詢問授權。這與認證有關,但你應該確保區分這兩者。這聽起來像你想要的是驗證用戶,然後讓你的節點授權訪問基於此。

話雖如此,它取決於您用於建立會話的身份驗證類型。

基本身份驗證(當直接與Sync Gateway一起使用時)僅傳遞用戶名和密碼以進行檢查。之後,我認爲你會得到一個會話cookie。使用它來認證其他任何東西都非常困難(例如,您必須自己修改Sync Gateway代碼)。

在身份驗證流程中,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)的文章。