注意:我對這個問題有4個賞金,但是以下未提出答案的答案都不是這個問題所需的答案。所需的一切都在下面的Update 3中,只是在尋找Laravel代碼來實現(xiàn)。更新3:此流程圖正是我要完成的流程,下面的所有內(nèi)容都是原始問題,其中包含一些較舊的更新。該流程圖總結(jié)了所需的一切。下面流程圖中的綠色部分是我知道該怎么做的部分。我正在尋找紅色部分及其旁注,以尋求使用Laravel代碼完成的幫助。在此處輸入圖片說明我已經(jīng)做了很多研究,但是在將Laravel與JWT httponly cookie結(jié)合使用以用于自用API時,信息總是會很簡短,而且并不完整(大多數(shù)在線教程僅顯示JWT存儲在本地存儲中不是很安全) )??雌饋?,當包含向服務器發(fā)送的每個請求以驗證用戶身份時,應使用包含Passport JWT的httponly cookie來識別Javascript端的用戶。要了解如何使此設置有效的完整圖片,還需要一些其他事項,而在涉及該內(nèi)容的單個教程中沒有涉及到:從JS端登錄后,Laravel Passport(不是tymon auth)將生成加密的JWT,并將其作為httponly cookie發(fā)送為響應。使用什么中間件?如果刷新令牌增加了安全性,該如何實施?調(diào)用auth端點的JavaScript(例如,axios)api偽代碼,httponly cookie如何傳遞到后端以及后端如何驗證令牌有效。如果一個帳戶是從多個設備登錄的,那么一個設備被盜了,如何撤消所有已認證用戶設備的訪問權限(假設用戶從他們可以控制的登錄設備上更改密碼)?登錄/注冊,注銷,更改密碼,忘記密碼控制器方法通常看起來像什么來處理令牌的創(chuàng)建/驗證/吊銷?CSRF令牌集成。我希望這個問題的答案可以為將來的讀者和那些目前正在努力尋找一個涵蓋上述要點的自學API的讀者提供一個易于遵循的指南。更新1:請注意,我CreateFreshApiToken之前曾嘗試過,但是在撤銷用戶令牌時(對于上述第3點和第4點),該方法不起作用。這是基于此評論的核心laravel開發(fā)商,談論時CreateFreshApiToken中間件:該中間件創(chuàng)建的JWT令牌不會存儲在任何地方。它們不能被撤銷或“不存在”。它們只是提供了一種通過laravel_token cookie對您的api調(diào)用進行身份驗證的方法。它與訪問令牌無關。另外:通常,您不會在發(fā)行同一個應用的客戶端上使用客戶端發(fā)行的令牌。您可以在第一方或第三方應用中使用它們。使用中間件或客戶端發(fā)行的令牌,但不能同時使用兩者。因此,似乎可以滿足第3點和第4點的要求,以撤銷令牌,如果使用CreateFreshApiToken中間件,則不可能這樣做。在客戶端,Authorization: Bearer <token>處理安全的httpOnly cookie 似乎不是走的路。我認為請求/響應應該包括安全的httpOnly cookie作為請求/響應標頭,例如基于laravel docs:使用這種身份驗證方法時,默認的Laravel JavaScript支架會指示Axios始終發(fā)送X-CSRF-TOKEN和X-Requested-With標頭。headerswindow.axios.defaults.headers.common = { 'X-Requested-With': 'XMLHttpRequest', 'X-CSRF-TOKEN': (csrf_token goes here)};這也是我尋求涵蓋以上所有要點的解決方案的原因。抱歉,我使用的是Laravel 5.6而不是5.5。更新2:密碼授予/刷新令牌授予組合似乎是必經(jīng)之路。使用“ 密碼授予/刷新令牌授予”組合查找易于遵循的實施指南。密碼授予: 此授予適合與我們信任的客戶打交道,例如用于我們自己網(wǎng)站的移動應用程序。在這種情況下,客戶端會將用戶的登錄憑據(jù)發(fā)送到授權服務器,然后服務器直接頒發(fā)訪問令牌。刷新令牌授予: 當服務器發(fā)出訪問令牌時,它還會設置訪問令牌的到期時間。當我們想要在訪問令牌過期后刷新訪問令牌時,使用刷新令牌授予。在這種情況下,授權服務器將在發(fā)出訪問令牌的同時發(fā)送刷新令牌,該刷新令牌可用于請求新的訪問令牌。我正在尋找一種使用Password Grant / Refresh Token Grant組合的簡單,直接,全面的答案,該組合使用httpOnly安全cookie覆蓋上述原始5點的所有部分,創(chuàng)建/撤消/刷新令牌,創(chuàng)建登錄cookie,注銷cookie撤銷,控制器方法,CSRF等。
Laravel 5.6-自耗API的Passport JWT httponly cookie SPA
拉風的咖菲貓
2019-09-24 15:08:53