2016-08-20 55 views
3

我有一個節點服務器使用oauth與第三方進行身份驗證(如堆棧溢出)。當第三方點擊我的回調並授權請求並獲取訪問令牌和其他信息時,我想將此信息傳遞給我製作的反應應用程序,因此反應應用程序可以使REST調用直接使用訪問令牌來自提供者。節點表達反應oauth傳遞訪問令牌後回調與反應客戶端應用程序

我是新來的反應和節點,但能夠使節點服務器,可以獲取訪問和刷新令牌信息。我是新來的'服務'並提供反應的應用程序。我一直在使用

app.use('/client', express.static(__dirname + '/client')); 

來服務反應的應用程序,這在很大程度上的作用很大。目前我所處的情況超出了範圍,我想了解如何在授權回調後將oauth信息與我的反應應用程序一起發回。我正在使用的流在回調中授權請求,然後重定向回到/ client路由來呈現應用程序,該應用程序未能將任何oauth信息傳遞給客戶端。有沒有什麼辦法可以在重定向之前設置標題以獲取oauth信息,然後在響應應用程序中獲取該oauth信息?

我張貼在這裏獲得一些建議,我應該閱讀一些途徑和資源,也許對我目前的情況提出一些建議。我渴望瞭解更多關於快遞的信息,目前正在尋找將我需要的信息設置爲標題,然後將反應應用程序作爲文件或其他東西提供的服務,但我還不確定。

感謝所有先進!

回答

2

我會盡我所能來回答你的問題。因此,SPA(單頁應用程序)和OAuth登錄的問題是使用重定向傳輸數據的唯一方法是URL查詢字符串。 JWT(JSON Web Token)可以實現這一點,但它只支持移動原生SDK-s。解決方案的網絡,而不使用酥料餅的流動這裏:

對於Node.js的,我建議使用OAuth的Passport.js模塊,登錄流程:

  1. 例/認證/谷歌 - >重定向到谷歌登錄頁面。
  2. 成功時,你就會得到重定向回回調URL /認證/谷歌/回調
  3. 你也拿回的access_token,refresh_token,基本輪廓等
  4. 沒有會話使用,因此我們使用了智威湯遜和產生信息服務器端的令牌。
  5. 使用令牌重定向迴應用程序:app.example.com?token=JASJKDk ..
  6. 客戶端從查詢字符串中提取令牌。

這只是您可能使用的一種可能的流程,而不是JWT,您也可以使用會話/ cookie解決方案。

+0

非常感謝你! 這是有道理的。因此,我會讓節點服務器處理/ auth/google&/ auth/google/callback路由並使用JWT對access_token進行編碼,refresh_token存儲在url中以傳回客戶端? 所以流量可能是這樣的: 1.點擊一個按鈕登錄到谷歌。 GET獲取來自節點的谷歌登錄URL重定向它得到的URL 2.login to google - >請求回調節點並返回access_token,refresh_token等 3。使這個信息的JWT附加到URL並返回url上的客戶端應用程序 4.decode jwt在客戶端使用令牌爲ajax – user1807880

+0

實際上,您只需要JWT,不需要傳回訪問令牌,刷新令牌,至少我想你不需要這些在客戶端,只在服務器端? –

+0

對於這個用例,我打算將訪問令牌傳遞給客戶端以進行一些其他的調用。只要將URL上的access_token放在URL上就像JWT一樣是不安全的?我想確認這是使用JWT的原因 – user1807880

相關問題