Skip to content

Multiple SSO Clients

Configure multiple clients

In config/sso-client.php:

php
'default' => env('SSO_CLIENT_NAME', 'default'),

'clients' => [
    'default' => [
        'client_name'     => env('AUTH_CLIENT_NAME'),
        'client_id'       => env('AUTH_CLIENT_ID'),
        'client_secret'   => env('AUTH_CLIENT_SECRET'),
        'api_token'       => env('AUTH_API_TOKEN'),
        'base_uri'        => env('AUTH_BASE_URI', 'https://api.sso.carro.co'),
        'default_scopes'             => env('AUTH_DEFAULT_SCOPES', ''),
        'callback_uri'               => env('AUTH_CALLBACK_URI', 'https://example.com/auth/callback'),
        'encryption_secret'          => env('ENCRYPTION_SECRET'),
        'enable_internal_auth_check' => env('SSO_ENABLE_INTERNAL_AUTH_CHECK', false),
        'passport'                   => [
            'public_key' => env('SSO_PASSPORT_PUBLIC_KEY'),
        ],
        'related_frontend_url'    => env('AUTH_RELATED_FRONTEND_URL'),
    ],

    'other_client' => [
        'client_name'     => env('OTHER_CLIENT_NAME'),
        'client_id'       => env('OTHER_CLIENT_ID'),
        'client_secret'   => env('OTHER_CLIENT_SECRET'),
        'api_token'       => env('OTHER_API_TOKEN'),
        'base_uri'        => env('OTHER_BASE_URI'),
    ],
],

Associate clients with guards

In config/auth.php:

php
'guards' => [
    'carro' => [
        'driver' => 'carro',
        'provider' => 'users',
        'sso-client' => 'default'
    ],
    'carro-other-client' => [
        'driver' => 'carro',
        'provider' => 'users',
        'sso-client' => 'other_client'
    ],
],

switch-sso-client middleware

php
Route::middleware(['switch-sso-client:other_client'])
    ->group(function () {
        // Routes using other_client configuration
    });

Route::middleware(['auth:carro', 'switch-sso-client:other_client'])
    ->group(function () {
        // ...
    });

The MIT License (MIT). Please see License File in the repository for more information.