2017-08-17 36 views
0

我已經編寫了一個簡單的React應用程序,遵循稍微過時的教程的說明,該教程旨在顯示具有單個聯繫人數據的側欄中的聯繫人列表顯示在索引組件中,但前提是您已通過登錄Auth0組件進行身份驗證並且JSON Web令牌保存在本地存儲中。我已確認我已登錄並獲得令牌。到目前爲止,一切正常。使用JWT的快速API返回「未經授權:算法錯誤無效」

當我點擊側邊欄中的聯繫人來查看聯繫人的數據(這些數據來自使用Express設置的基本API)時,該問題就開始了。我一直在使用郵差,因爲唯一的錯誤,我從應用程序得到解決是「401:未經授權」

當我打我的終點,suppling與Authorization頭「承載[JWT_VALUE_HERE]」郵差與「UnauthorizedError迴應:無效算法」

全輸出

UnauthorizedError: invalid algorithm 
      
   at /Users/Arkham/Documents/Web/eldrac/react-auth-server/node_modules/express-jwt/lib/index.js:102:22
   at /Users/Arkham/Documents/Web/eldrac/react-auth-server/node_modules/jsonwebtoken/verify.js:27:18
   at _combinedTickCallback (internal/process/next_tick.js:95:7)
   at process._tickCallback (internal/process/next_tick.js:161:9)

我已經做了一些谷歌搜索和調整我的Auth0客戶端設置,具體的算法設置,但不管是什麼我將其設置爲(我的選擇是RS256和HS256 ),它似乎沒有區別。我渴望通過這個。

我用的SuperAgent,使我的要求

getContact: (url) => { 
    return new Promise((resolve, reject) => { 
     request 
     .get(url) 
     .set('Authorization', 'Bearer ' + AuthStore.getJwt()) 
     .end((err, response) => { 
      if (err) reject(err); 
      resolve(JSON.parse(response.text)); 
     }) 
    }); 
    } 

這似乎是工作。我已經確認url是正確的,並且AuthStore.getJwt()提供了正確的參數。

+0

布賴恩 - 你看到我的回答 - 有什麼意見嗎? – arcseldon

回答

0

您的問題沒有提供診斷問題所需的許多信息 - 首先,您應該向API發送JWT Access令牌,而不是您的Id令牌。

前期問題:

  • 你有在Auth0儀表板定義的API?

  • 當您進行身份驗證時,您是否在使用受衆參數?它是 可能訪問令牌正在使用RS256。記住訪問 令牌和資源API,它是控制算法的API,而不是客戶端。

  • 您的API使用什麼算法來驗證令牌?

  • 你的代碼片段中的url大概是 http://localhost:3001/myendpoint

取出您的令牌,並將其粘貼到https://jwt.io以查看使用的算法是什麼。將其與用於驗證令牌的內容進行比較。

請在此處更新我的答案,因爲您提供了更多信息 - 請使用評論部分來解答此答案。

相關問題