OAuth(開放授權)是一種授權框架,用于授權第三方應用程序訪問受保護的資源。在PHP中,可以使用OAuth庫來保護API資源。
下面是一個簡單的示例,演示如何在PHP中使用OAuth來保護API資源:
composer require league/oauth2-server
use League\OAuth2\Server\AuthorizationServer;
use League\OAuth2\Server\Grant\ClientCredentialsGrant;
use League\OAuth2\Server\Repositories\ClientRepositoryInterface;
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
$server = new AuthorizationServer(
$clientRepository, // 實現ClientRepositoryInterface的客戶端存儲庫
$accessTokenRepository, // 實現AccessTokenRepositoryInterface的訪問令牌存儲庫
$scopeRepository, // 作用域存儲庫
$privateKey, // 私鑰路徑
$publicKey // 公鑰路徑
);
$grant = new ClientCredentialsGrant();
$server->enableGrantType($grant, new \DateInterval('PT1H')); // 令牌有效期1小時
use League\OAuth2\Server\ResourceServer;
$resourceServer = new ResourceServer(
$accessTokenRepository, // AccessTokenRepositoryInterface的實現
$publicKey // 公鑰路徑
);
try {
$resourceServer->validateAuthenticatedRequest();
echo 'Access granted!';
} catch (\League\OAuth2\Server\Exception\OAuthServerException $e) {
echo 'Access denied: ' . $e->getMessage();
}
通過以上步驟,可以實現在PHP中使用OAuth來保護API資源。當客戶端請求資源時,服務器會驗證傳入請求的訪問令牌,并根據令牌的有效性來決定是否授予訪問權限。