介紹 JSON Web Token (JWT)

學習 JWT 基礎知識及如何使用它 JSON Web Token 是一種用於創建應用程式的訪問令牌的標準。 它的運作方式是,伺服器生成一個令牌,用於驗證使用者身份,並將其發送給客戶端。 客戶端將在每個後續請求中將令牌發送回伺服器,因此伺服器知道該請求來自特定身份。 這種架構在現代 Web 應用程序中非常有效,在使用者驗證之後,我們會對 REST 或 GraphQL API 執行API請求。 誰在使用 JWT 呢?以 Google 為例,如果你使用 Google APIs,你會使用 JWT。 JWT 是被加密簽名的(但不會被加密,因此在將用戶數據存儲在 JWT 中時,使用 HTTPS 是必須的),所以當我們收到它時,我們可以確信它的可信度,沒有中間人可以截取並修改它,或者無效化它所保存的數據。 儘管如此,JWT 經常因過度使用而受到批評,尤其是在可以使用更少問題的解決方案時使用它們。 你需要對該主題形成自己的觀點。我並不主張某種技術優於其他,只是展示你在手邊擁有的所有機會和工具。 它們有什麼用途?主要用於 API 認證和服務器到服務器的授權。 JWT 令牌如何生成? 使用 Node.js 你可以通過以下代碼生成令牌的第一部分: const header = { "alg": "HS256", "typ": "JWT" } const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64') 我們設定 HMAC SHA256 作為簽名算法(JWT 支持多種算法),然後我們從這個 JSON 編碼對象創建一個緩存,並且使用 base64 編碼它。 部分的結果是 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9。 接下來我們添加 payload,我們可以使用任意類型的數據自定義它。有一些預留的鍵,包括 iss 和 exp,它們標識令牌的發行者和過期時間。...

使用 Laravel Breeze 設置身份驗證

本教程是 Laravel 手冊的一部分,可以從 https://flaviocopes.com/access/ 下載 我們不希望隨機的人進入網站並編輯數據。 我們希望人們先登錄。 如果未登錄,他們會看到狗的列表。 如果已登錄,他們將有能力編輯列表。 Laravel 在框架中為我們提供了內置的身份驗證支持。 為了更加方便,它提供了 Breeze,這是一個應用程序的開始套件工具,可以快速創建我們所需的東西。Breeze 可以快速搭建用戶註冊、登錄、密碼重置、個人資料頁面、儀表板等等功能。它太棒了。對於更高級的需求,我們還有 JetStream,但是 Breeze 更容易設置。 首先,創建一個新的 Laravel 項目,這樣我們可以從一個空白的起點開始。 第一個項目被命名為 first,為了延續傳統,我們將這個第二個項目命名為 second: composer create-project laravel/laravel second 進入該文件夾: cd second 使用 composer 安裝 Breeze: composer require laravel/breeze --dev 現在運行下面的命令: php artisan breeze:install 然後選擇選項 0,即“blade”,並選擇其他問題的默認選項,任務腳本會自動生成遠足點的登錄系統: 現在你可以運行 php artisan serve,並打開 http://127.0.0.1:8000/。 你會看到“Log in”和“Register”鏈接: 所有的登錄功能已經可以正常使用: Laravel 添加了大量的資源來實現這一點。 對於開發者來說,這可能需要花數日的時間,而且這些代碼經過了實戰考驗,你不希望自己寫這些代碼,因為這是一個非常重要且需要進行良好的安全性測試的功能。 我建議你查看文件結構,並將其與第一個項目進行對比。許多新東西已經被添加了,例如視圖: 但在進一步之前,我們需要為此項目設置數據庫,就像我們在第一個項目中所做的那樣。我們打開 .env 文件,註釋掉以下幾行: 然後添加以下內容: DB\_CONNECTION=sqlite 以配置 SQLite 數據庫。 然後運行下面的命令: php artisan migrate 在另一個終端窗口中,運行 npm install 命令,然後運行 npm run dev 命令,這是一個長時間運行的過程,需要與 php artisan serve 一起運行(⚠️ 請確保在 second 文件夾中運行,而非 first 項目中運行,我剛剛花了15分鐘的時間才找到問題所在)。...

只有驗證過的使用者可以新增項目到資料庫

本教程是Laravel手冊的一部分。從此處下載 。 現在,讓我們重新實現第一個項目,這次當未登錄時顯示狗的列表,但只允許已登錄的使用者修改數據。 首先,我們創建一個新的遷移: php artisan make:migration create_dogs_table 打開新創建的遷移文件,在我這裡是 database/migrations/2023_05_12_164831_create_dogs_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('dogs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('dogs'); } }; 我們只需稍微修改遷移,添加了狗的名稱: Schema::create('dogs', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); 保存文件,返回終端,運行 php artisan migrate...

如何使用使用使用使用帳號和密碼驗證到GitHub

我正在設置一個新的編輯器,並嘗試進行GitHub的推送工作流程。 我提交了我的更改,點擊“Push”按鈕,然後出現一個對話框要求輸入GitHub帳號和密碼。 在GitHub上,我已經設置了雙重認證,因此不能只使用這些憑證直接登錄。 我需要做的是創建一個與應用程序綁定的個人訪問令牌,並具有所需權限。 所以,我進入GitHub設置中,找到開發者設置: 點擊個人訪問令牌: 現在添加一個名稱,以便您記住此令牌的用途,將到期時間設置為“不過期”,並啟用repo範圍。這是您唯一需要的範圍: 保存後,您將能夠看到這個令牌: 現在將此令牌作為對話框窗口中的密碼輸入。 完成!

如何對任何Google API進行身分驗證

Google開發人員控制台可能很難理解,這也是我有時對使用Google API持抵觸態度的原因之一。本文旨在簡化使用Google開發人員控制台對任何Google API進行身分驗證的過程。 本文將解釋如何使用Google開發人員控制台對任何Google API進行身分驗證。 開發人員控制台可能很難理解,這也是我有時對使用Google API持抵觸態度的原因之一。 現在,讓我們以一種非常簡單的方式來了解這個過程。 本指南假設您已經擁有Google帳戶。 建立新的Google API項目 創建認證憑證 服務到服務API 使用JSON Key檔案 使用環境變數 訪問其他API 建立新的Google API項目 如果還沒有,請建立一個新項目。 從控制台點擊“建立新項目”。 為其命名,然後您將被重定向到項目控制台: 通過點擊“啟用API和服務”,添加一個API。 從列表中搜索您感興趣的API。 並啟用該API。 就這樣! 項目現在已準備就緒,您可以繼續並創建認證憑證。 創建認證憑證 有三種方法可以用來對Google API進行身分驗證: OAuth 2 服務到服務 API金鑰 API金鑰在安全性和受Google限制的範圍和使用方面較不安全。 OAuth 2是為了讓您的應用程式代表用戶請求,因此流程比實際需要的更為複雜,並且需要公開處理回調的URL。對於簡單的用途來說,這太過於複雜。 在服務到服務身分驗證模型中,應用程式直接使用服務帳戶通過使用JSON Web Token與Google API進行通信。 這是最簡單的方法,尤其適合正在構建從您的服務器到Google API(例如Node.js應用程式)的原型或應用程式。這是本文中我將談論的唯一方法。 服務到服務API 要使用此方法,您需要通過Google開發人員控制台生成JSON Key文件。 還有一種選項,涉及下載.p12文件,然後使用openssl命令將其轉換為pem文件。但Google不再建議使用此方法,只需使用JSON。 在項目控制台上,點擊“建立認證憑證”,然後選擇服務帳戶金鑰: 填寫表格並選擇“JSON”金鑰類型: 就這樣!Google向您發送了一個JSON文件: 這是此JSON文件的內容,名為JSON Key文件: { "type": "service\_account", "project\_id": "...", "private\_key\_id": "...", "private\_key": "...", "client\_email": "...", "client\_id": "...", "auth\_uri": "https://accounts.google.com/o/oauth2/auth", "token\_uri": "https://accounts.google.com/o/oauth2/token", "auth\_provider\_x509\_cert\_url": "https://www....

如何設置 Git SSH 金鑰

在使用命令行執行 Git 時,最常用的身份驗證方式是使用 SSH 金鑰。了解如何設置它們。 在使用命令行執行 Git 時,最常用的身份驗證方式是使用 SSH 金鑰。 大多數基於圖形界面的客戶端(如 GitHub Desktop)會幫你處理這個問題,但有時你需要使用命令行,所以設置好 SSH 金鑰非常有用。 此外,有時您需要一個 SSH 金鑰來執行一些有用的操作,例如在遠程服務器上拉取存儲庫。 您的電腦上的金鑰 SSH 金鑰存儲在 ~/.ssh 文件夾中。 您可以在其中擁有多個金鑰,因為 SSH 金鑰用於除了 Git 之外的其他事情。 您可以通過輸入以下命令列出所有 SSH 金鑰: ls -al ~/.ssh 如果您有現有的金鑰,您會注意到它們是成對存在的,一個文件和另一個以 .pub 結尾的名稱相似的文件: .pub 文件包含公鑰,而另一個文件包含私鑰,私鑰絕不應在任何地方共享。 您絕不能共享私鑰。如果您丟失私鑰,您將不得不重新生成新的私鑰/公鑰對,因為沒有私鑰部分身份驗證將無法成功完成。 生成新金鑰 您可以使用命令 ssh-keygen 生成新的 SSH 金鑰,該命令在所有 macOS、Linux 和具有 Linux 子系統或Git for Windows 包的現代 Windows 電腦上都可用。 下面是您使用的命令: ssh-keygen -t rsa -b 4096 -C "[[email protected]](/cdn-cgi/l/email-protection)" 最後一部分,在這個例子中填寫了一個電子郵件地址,這是一個註釋。您可以輸入任何您想要的電子郵件,它不必是您的 GitHub 帳戶,甚至可以是一個隨機字符串。如果存在歧義,了解是誰生成了金鑰可能是有用的。 密鑰生成程序會問您希望將密鑰保存在哪裡。如果這是第一個金鑰,建議使用 id_rsa 作為文件名,但最好選擇一個能讓您記住所生成的服務的名稱,比如 github_rsa。...