隨著微服務、開放平台興起,API 成為系統互通核心。本文整理三大主流 API 認證機制——HTTP Basic Auth、OAuth、SOAP,並針對 PHP 實作要點進行深度解析,助你選型最適合的方案。
客戶端在 Request Header 帶入 Authorization: Basic base64(username:password),或直接嵌入 URL https://user:pass@api.example.com。伺服器驗證失敗回傳 401。
<?php
$fp = fsockopen("www.example.com", 80);
fputs($fp, "GET /api/resource HTTP/1.0\r\n");
fputs($fp, "Host: www.example.com\r\n");
fputs($fp, "Authorization: Basic " . base64_encode("user:pass") . "\r\n");
fputs($fp, "\r\n");
fpassthru($fp);
?>
| 優點 | 缺點 |
|---|---|
| 實作極簡,無需額外庫 | 每次請求傳送明文憑證(Base64 非加密) |
| 廣泛支援,瀏覽器原生彈窗 | 無法撤銷單一裝置授權,安全性較弱 |
| 適合內部微服務、低敏感度場景 | 必須強制 HTTPS,否則極易被竊聽 |
推薦使用成熟庫 league/oauth2-client 或 laravel/passport(Laravel 專用),避免自行造輪子。官方範例下載:oauth2-php。
<?php
$client = new SoapClient("https://example.com/service?wsdl");
$result = $client->SomeMethod(['param' => 'value']);
?>
注意:SOAP 訊息冗長、解析效率低,現代 REST/GraphQL 架構下較少用於新專案。
| 場景 | 推薦方案 | 關鍵考量 |
|---|---|---|
| 內部微服務、低敏感資料 | HTTP Basic Auth + HTTPS | 簡單、效能佳、需強制加密傳輸 |
| 開放平台、第三方應用接入 | OAuth 2.0 (Authorization Code) | 安全、標準、支援細粒度權限控制 |
| 企業級異構系統整合、強契約需求 | SOAP / gRPC | WSDL 契約、WS-Security、跨語言強型別 |
| 現代 Web/行動應用後端 | RESTful + JWT / OAuth 2.0 | 輕量、緩存友好、生態豐富 |
API 認證無銀彈,需依業務敏感度、整合對象、團隊技術棧綜合評估。現代新專案首選 OAuth 2.0 / OpenID Connect;內部高效能場景可考慮 mTLS 或簽名驗證;避免在生產環境裸跑 Basic Auth。