2017-08-24 63 views
0

我正在用靜態前端構建一個API,並通過身份驗證絆倒。我正在考慮對此使用Auth0,但我對認證之後會發生什麼有點模糊。什麼是SPA-Auth0-API令牌認證序列?

SPA和API位於不同的主機上。

那麼,這是否接近成功API訪問的事件序列?

  1. 客戶端請求的資源來自API
  2. 的API響應,資源保護
  3. 客戶端提交登錄憑據Auth0
  4. Auth0認證證書,並與響應...什麼?一個令牌?
  5. 客戶端存儲此令牌以供將來使用? (這不是CSRF的祕訣嗎?)
  6. 然後客戶端從API請求資源,但是這次使用令牌?
  7. API會識別令牌,並用資源進行響應?或者,在響應客戶端的資源之前,API是否必須針對每個請求驗證Auth0的令牌?

在此先感謝。

+0

嗨,你看到我的答案從2天前下面?它有助於你的理解或任何尚不清楚的東西嗎? – arcseldon

+0

hi @arcseldon,非常感謝你的回答。我還沒有機會實施你的建議。似乎很清楚,我剛剛提出了這個建議。當我得到更多時間在這個寵物項目上工作時,我會將其標記爲正確:) – allanberry

+0

感謝v。很多:)祝你好運,當然,如果你需要澄清,請使用評論。 – arcseldon

回答

1

基本上,你的步驟是正確的 - 使用Auth0和SPA應用程序用於下面的描述。

使用Auth0進行身份驗證,並在請求中傳遞audience參數令牌作爲response_type。以下是一個例子,只需將{{YOUR_XXX}}部分與您自己的值交換即可。這將結果發送到https://jwt.io(你需要使用Auth0儀表板/ API將它添加到您的允許回調的客戶端。

https://{{YOUR_TENANT}}.auth0.com/authorize?client_id={{YOUR_CLIENT_ID}}&protocol=oauth2&redirect_uri=https://jwt.io&response_type=token&scope=openid email&audience=https://{{YOUR_API_AUDIENCE}}&nonce=123&state=xyz 

在這裏看到docs這一點。

沒錯,SPA客戶端通常將JWT訪問令牌存儲在本地存儲中,這比使用cookie說明更好地保護了CSRF,然後使用返回的JWT訪問令牌對API進行授權請求(通常通過發送Authorization Bearer頭)。無狀態和持票人令牌(JWT訪問令牌)需要在每個請求中進行驗證 - 髮卡行/簽名/受衆/到期 - Auth0強烈支持RS256通過HS256 - 並有庫/ SDK,抽象出低層次的細節。例如,使用Node.js(Express),這與向Passport添加一些中間件一樣簡單。 在RS256 vs HS256 here上寫得很好。

有關完整示例,請使用Node.js/Express,recommend this sample

希望這會有所幫助,如果還有什麼不清楚的地方,請隨時發表評論。

+0

終於解決了這個問題。非常感謝。 – allanberry

+0

快樂。感謝您的承認:) – arcseldon