carsguide/auth-manager

Lumen/Laravel 的 Auth0 包装器

此包的官方仓库似乎已删除,因此该包已被冻结。

v10.0.0 2024-02-07 23:22 UTC

README

使用 PHP 8.0 版本在微服务中管理 Lumen 和 Laravel 的 Auth0 集成。

安装

通过 composer

$ composer require carsguide/auth-manager

环境设置 .env 文件

AUTH0_AUDIENCE=
AUTH0_OAUTH_URL=
AUTH0_DOMAIN=
AUTH0_JWT_CLIENTID=
AUTH0_JWT_CLIENTSECRET=
AUTH0_ALGORITHM=
这是什么
AUTH0_AUDIENCE 验证令牌的 API 微服务的 Auth0 受众/标识符
AUTH0_OAUTH_URL 查询以获取令牌的 Auth0 URL(租户)
AUTH0_DOMAIN 租户的 Auth0 域(在令牌验证期间使用)
AUTH0_JWT_CLIENTID 获取令牌的微服务的 Auth0 客户端 ID
AUTH0_JWT_CLIENTSECRET 获取令牌的微服务的 Auth0 客户端密钥
AUTH0_ALGORITHM 算法方法,建议使用 RS256(默认)

注册服务提供者

Lumen

将以下代码片段添加到 bootstrap/app.php 文件的 register service providers 部分

$app->register(Carsguide\Auth\Providers\AuthManagerServiceProvider::class);

Laravel

将以下代码片段添加到 config/app.php 文件的 register service providers 部分

Carsguide\Auth\Providers\AuthManagerServiceProvider::class,

注册中间件

要使用令牌和范围验证,请通过 routeMiddleware() 注册中间件

Lumen: bootstrap/app.php

$app->routeMiddleware([
    'auth' => Carsguide\Auth\Middlewares\Auth0Middleware::class,
]);

Laravel: app/Http/kernel.php

protected $routeMiddleware = [
    'auth' => \Carsguide\Auth\Middlewares\Auth0Middleware::class,
];

使用

生成 JWT 令牌

use Carsguide\Auth\AuthManager;
use GuzzleHttp\Client;

$auth = new AuthManager(new Client());
$auth = $auth->setAudience('foobar');
$auth->getToken();

使用 AuthManager Facade

use Carsguide\Auth\Facades\AuthManager;

AuthManager::setAudience('foobar')->getToken();

缓存 JWT 令牌

 AuthManager::setAudience('foobar')
    // By default, JWT will cache for 50 minutes
    // If you need to override the default length, 
    // pass minutes in cache(120) method.
    ->cache() // or ->cache($minutes = 120)
    ->getToken();

验证 JWT 令牌/范围访问

每个令牌都通过中间件进行验证。您必须在路由或控制器中调用中间件以验证访问。中间件需要定义范围,不能是全局的。

$this->middleware('auth:listings:read');

使用路由文件

$router->get('admin/profile', ['middleware' => 'auth:listings:read', function () {
    //
}]);