個人訪問權杖、機器對機器身份驗證和 API 金鑰定義及其實際案例
學習個人訪問權杖(PATs)、機器對機器(M2M)身份驗證和 API 金鑰之間的差異,以及它們的用法。
學習個人訪問權杖(PATs)、機器對機器(M2M)身份驗證和 API 金鑰之間的差異,以及它們的用法。
如果你正在構建一個軟件或 SaaS 產品,你會經常遇到一個廣泛的用例或功能請求:API 請求。尤其是更大的企業客戶可能希望程式化地訪問資源,無論是在個人還是組織層面上。
在這些情況下,通常需要 API 金鑰、個人訪問權杖(PATs)和機器對機器(M2M)身份驗證。在本文中,我們將探討這些方法之間的差異,以及它們如何在開發者的 B2B 產品開發中使用。
首先讓我們看看這三者之間的相似之處。
理解這些相似之處有助於識別這些身份驗證方法的共同基礎。它們的差異使得可以根據具體的用例和安全要求選擇最合適的解決方案。
現在,我們來討論它們的差異,專注於它們的用例以及何時使用每種方法。
API 金鑰用於識別和授權調用的應用程序或服務。它們通常是長壽命的並且在輪換之前是靜態的,通常具有一組固定的權限。它們主要用於服務器對服務器的通信或訪問公共數據,這些權杖通常不代表特定用戶。
API 金鑰由 API 提供者發行並給予註冊的 API 消費者 [1],API 消費者每个请求都包括这个金鑰。API 伺服器然後檢查 API 金鑰以驗證消費者的身份,才返回請求的數據。
API 金鑰不像其他形式的 API 身份驗證 如 OAuth 和 JWT 那樣有效,但它們仍然在幫助 API 生產者監控使用情況的同時保持敏感數據的安全中發揮重要作用。
[1]: 一個 API 消費者是任何與 API 互動以訪問其功能或數據的應用程序、服務或用戶。他們向 API 發送請求以執行諸如檢索、創建、更新或刪除資源的操作。API 消費者可以是網絡應用程序、移動應用、其他服務器,甚至是利用 API 與其他服務整合或在現有平台之上構建新功能的個別開發者。
Postman: 什麼是 API 金鑰?
當人們討論 API 金鑰的使用案例時,他們經常提到自動化、數據共享、測試、開發和安全控制。然而,這些相當技術化。在實際案例中,構建產品時最常見的目的是集成。
Zapier: 使用 API 金鑰添加身份驗證
Zapier 是一個流行的自動化工具,它連接不同的網絡應用程序。當與 Zapier 集成應用程序時,使用 API 金鑰來驗證和授權訪問該應用程序的 API。例如,想自動化 CRM 系統和電子郵件營銷工具之間的任務,需要從 CRM 系統生成一個 API 金鑰並提供給 Zapier。然後使用該金鑰驗證 Zapier 向 CRM 的 API 發出的請求,讓數據在兩個系統之間安全地流動。

Stripe 利用 API 金鑰來實現與各種平台和應用程序的安全集成。使用 開發者儀表板 創建、顯示、刪除和滾動 API 金鑰。

個人訪問權杖是一個類似的概念,但代表特定用戶的身份和權限,在成功身份驗證或登錄後動態生成,通常有有限的壽命,但可以刷新。它們提供用戶特定數據和功能的細粒度訪問控制,並且通常用於 CLI 工具、腳本或個人 API 訪問。
有兩個典型場景,
自動化與腳本
這意味著當開發者使用 PAT 自動化將代碼從版本庫部署到生成環境時,減少手動干預,确保一致性。
例如,GitHub 用戶可以創建 PATs 來通過 HTTPS 驗證 Git 操作並與 GitHub 的 REST API 互動。這對於需要自動化諸如克隆存儲庫、推送提交或管理問題和拉取請求之類任務的開發者特別有用。
與外部應用程序集成
這意味著啟用不同系統和應用程序之間的安全通信。這看起來與 API 金鑰集成的情景類似,但 PAT 代表的是用戶,而不是客戶端或應用程序。
例如,項目經理使用 PAT 將項目管理工具與外部問題跟蹤系統集成,允許無縫的數據交換和同步,如 Atlassian(Jira 和 Confluence)。
上述場景更像是開發者工具。PATs 是否只對這些類型的產品有用?不。這裡有兩個額外的例子:一個是 CMS 系統,一個是生產力工具。
Contentful: 個人訪問權杖
Contentful 是一個無頭 CMS 平台,提供 PATs 作為使用其內容管理 API (CMA) 的替代 OAuth 權杖。
主要特徵包括:

Airtable 是一個雲協作平台,實施了 PATs 用於 API 訪問。
他們的系統允許:

M2M 專為服務對服務的通信而設計,無需人工干預。這源自用戶名和密碼不足以保護服務並且在有效自動化上效率不高的理念。
機器對機器(M2M)應用程序現在採用客戶端憑證流程,這是在 OAuth 2.0 RFC 6749 授權協議 中定義的。它也可以支持類似的標準協議。是的,與 PATs 和 API 金鑰相比,M2M 身份驗證對開放標準更為嚴格。
它驗證的是應用程序或服務本身,而不是用戶,並且通常使用 JWT(JSON Web Tokens)進行無狀態身份驗證。這為服務在分佈式系統中相互互動提供了一種安全方式。
它遵循類似的過程:
以下是一個使用機器對機器(M2M)身份驗證進行後端對後端通信的簡明例子:
場景:服務 A 需要訪問服務 B 的 API 數據。
設置:
身份驗證:
服務 A 請求訪問權杖自授權伺服器:
權杖發放:
API 請求:
服務 A 使用權杖向服務 B 請求數據:
驗證:
響應:
此過程允許服務 A 和服務 B 之間的安全、自動化通信,無需用戶干預,使用的是 OAuth 2.0 客戶端憑證流。
設備對設備通信
設備對設備通信,特別是在物聯網 (IoT) 的背景下,嚴重依賴於機器對機器 (M2M) 身份驗證,確保安全和有效的數據交換。
例如,像智能家居設備,智能恒溫器與中央家居自動化樞紐通信以根據用戶偏好調整溫度設置。恒溫器使用 M2M 身份驗證安全地將數據發送到樞紐並接收命令,確保只有授權的設備可以與家庭的供暖系統互動。
好吧,你已經看完了這篇文章。我能得到一個簡要總結嗎?當然!以下是關鍵點概覽: