| Install | |
|---|---|
composer require judasprabin/auth-manager |
|
| Latest Version: | v10.0 |
| PHP: | ^8.1 |
Manages Lumen and Laravel Auth0 integration in microservices using PHP 8.0 version.
Via composer
$ composer require carsguide/auth-manager
AUTH0_AUDIENCE=
AUTH0_OAUTH_URL=
AUTH0_DOMAIN=
AUTH0_JWT_CLIENTID=
AUTH0_JWT_CLIENTSECRET=
AUTH0_ALGORITHM=
| Value | What it is |
|---|---|
| AUTH0_AUDIENCE | Auth0 audience/identifier of the API micro service verifying the token |
| AUTH0_OAUTH_URL | Auth0 URL to query to get a token from (the tenant) |
| AUTH0_DOMAIN | Auth0 domain of tenant (used during token verifcation) |
| AUTH0_JWT_CLIENTID | Auth0 client ID of the micro service getting a token |
| AUTH0_JWT_CLIENTSECRET | Auth0 client secret of the micro service getting a token |
| AUTH0_ALGORITHM | Algorithm method, advise RS256 (default) |
Add the following snippet to the bootstrap/app.php file under the register service providers section:
$app->register(Carsguide\Auth\Providers\AuthManagerServiceProvider::class);
Add the following snippet to the config/app.php file under the register service providers section:
Carsguide\Auth\Providers\AuthManagerServiceProvider::class,
To use token and scope validation register the middleware via routeMiddleware()
$app->routeMiddleware([
'auth' => Carsguide\Auth\Middlewares\Auth0Middleware::class,
]);
protected $routeMiddleware = [
'auth' => \Carsguide\Auth\Middlewares\Auth0Middleware::class,
];
use Carsguide\Auth\AuthManager;
use GuzzleHttp\Client;
$auth = new AuthManager(new Client());
$auth = $auth->setAudience('foobar');
$auth->getToken();
Using AuthManager Facade:
use Carsguide\Auth\Facades\AuthManager;
AuthManager::setAudience('foobar')->getToken();
Cache JWT token:
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();
Each token is validated via middleware. You must call the middleware in routes or the controller to validate access. The middleware requires a scope be defined, nothing can be global.
$this->middleware('auth:listings:read');
Using routes file
$router->get('admin/profile', ['middleware' => 'auth:listings:read', function () {
//
}]);