judasprabin / auth-manager by prabink
forked from carsguide/auth-manager

Auth0 wrapper for Lumen/Laravel
20
0
0
Package Data
Maintainer Username: prabink
Maintainer Contact: anam.hossain@carsguide.com.au (Anam Hossain)
Package Create Date: 2024-01-22
Package Last Update: 2024-01-23
Language: PHP
License: MIT
Last Refreshed: 2024-04-30 03:00:02
Package Statistics
Total Downloads: 20
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 0
Total Watchers: 0
Total Forks: 0
Total Open Issues: 0

auth-manager

Manages Lumen and Laravel Auth0 integration in microservices using PHP 8.0 version.

Installation

Via composer

$ composer require carsguide/auth-manager

Environment settings .env file

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) |

Registering service provider

Lumen

Add the following snippet to the bootstrap/app.php file under the register service providers section:

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

Laravel

Add the following snippet to the config/app.php file under the register service providers section:

Carsguide\Auth\Providers\AuthManagerServiceProvider::class,

Registering middleware

To use token and scope validation register the middleware via 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,
];

Usage

Generate JWT Token

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();

Validate JWT Token / Scope Access

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 () {
    //
}]);