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资源。当客户端请求资源时,服务器会验证传入请求的访问令牌,并根据令牌的有效性来决定是否授予访问权限。