2016-11-08 291 views
1

我試圖從我的客戶端發送一個Auth0 JWT到我的服務器,並令牌驗證。我通過AuthHttp頭將從auth0認證返回的token_id發送到我的服務器,我可以在PHP中沒有問題的情況下獲得它。Auth0 JWT令牌驗證在PHP

簡短:

  • 角2 Auth0 JWT被髮送到PHP服務器。
  • 我如何驗證簽名是否正確?

我有祕密ID,我有JWT助手類與編碼和解碼。

如何檢查的標題和正文=智威湯遜的簽名送過來,如果是連做了正確的道路。

編輯:

我通過我的令牌,該令牌是

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvbG93aWUuZXUuYXV0aDAuY29tXC8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9._uyKrxJ0lPR-tEPjOFiI5ygeiM689gqURcIfG4sWkWc

中,我再拿到這個令牌的身體,使其進入陣陣Ÿ

Array (
[iss] => https://lowie.eu.auth0.com/ 
[sub] => google-oauth2|104688986817106472790 
[aud] => V0YeZDIbbeFtBxgqvRCsVAcYllqzZdiM 
[exp] => 1478731623 
[iat] => 1478695623) 

一旦我有數組,這是我的有效載荷嗎?

//這裏的標記的圖像被驗證爲正確 https://gyazo.com/93777863d988d8c6ef0fc4ea50755949

那麼,爲什麼下面的代碼不給我同樣的道理?

$jwt = JWT::encode($bodyArray, "SuperSecureSecretSecret"); 

但我收到此回

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvd2llLmV1LmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9.6lEg_0h0zytQZVBqDe-ZIS5PoSkFAJhWtRYSgaDCesY

回答

0

你應該使用支持您使用的智威湯遜簽名的類型現有的庫。有關PHP的可用選項的快速參考,請檢查中的jwt.io部分。

使用現有的庫首選在大多數情況下,但是,它也很重要,做圖書館的質量評估一些。

對於JWT簽名驗證閱讀這篇文章(Critical vulnerabilities in JSON Web Token libraries),以確保您的庫的使用不會導致可能存在的漏洞。


更新:因爲它們是用不同的密鑰簽名的,並且有效載荷也不同

令牌是不同的;在一個iss"https://lowie.eu.auth0.com/"而另一方面是"https:\/\/lowie.eu.auth0.com\/"。您可以通過使用Base64解碼器對有效載荷進行解碼來查看原始輸出。

更重要的是,你不應該產生任何標記,只是確認它們是有效的和可信的發行人發行到您委派實際的認證過程。

+0

我用的火力之一,有沒有具體的一個Auth0,看到更新的問題,請 –

+0

智威湯遜是一個標準,以便爲您的技術選擇會做任何兼容的庫。 –

+0

雖然我使用的密鑰是正確的並且直接從auth0複製,但我理解有效負載問題。你確定鑰匙是不正確的? –