josecl / claveunica
Cliente Laravel para autenticar con servicio OAuth2 de ClaveÚnica del Gobierno de Chile
Requires
- php: ^8.0
- ext-json: *
- socialiteproviders/manager: ~4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
- pestphp/pest-plugin-mock: ^1.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
README
Cliente Laravel para autenticar con servicio OAuth2 de ClaveÚnica del Gobierno de Chile.
Basado en socialiteproviders/claveunica, permite ser configurado en ambientes de desarrollo para emular el servicio de ClaveÚnica mediante josecl/emulador-claveunica.
Requerimientos
- Laravel 9
- php 8.0
Instalación y configuración
Se utiliza de manera similar a los provider de Socialite.
Instalar dependencia:
composer require josecl/claveunica
Agregar configuración al archivo config/services.php
:
'claveunica' => [ 'client_id' => env('CLAVEUNICA_CLIENT_ID'), 'client_secret' => env('CLAVEUNICA_CLIENT_SECRET'), 'redirect' => env('CLAVEUNICA_REDIRECT_URI') ],
Agregar event listener para los eventos SocialiteWasCalled
en tu archivo
app/Providers/EventServiceProvider.php
:
protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // ... \Josecl\ClaveUnica\ClaveUnicaExtendSocialite::class . '@handle', ], ];
Uso
Para redireccianar al servicio OAuth usar un contoller que haga redirect con:
return Socialite::driver('claveunica')->redirect();
Una vez que el usuario complete el flujo de autenticación será redireccionado
a la URL definida por CLAVEUNICA_REDIRECT_URI
.
Debes configurar un segundo controller que procese ese redirect y completar el inicio de sesión en tu aplicación. Puedes obtener los datos del usuario autenticado mediante este ejemplo:
$claveUnicaUser = Socialite::driver('claveunica')->user(); dump($claveUnicaUser->run); dump($claveUnicaUser->dv); dump($claveUnicaUser->first_name); dump($claveUnicaUser->last_name);
Emulador de ClaveÚnica
En ambientes de desarrollo puedes iniciar sesión simulando el flujo por ClaveÚnica mediante josecl/emulador-claveunica.
Instalación:
composer require josecl/emulador-claveunica
Actualizar el archivo config/services.php
con los parámetros adicionales y configurar las
variables de ambiente de acuerdo a la documentación de josecl/emulador-claveunica.
'claveunica' => [ 'client_id' => env('CLAVEUNICA_CLIENT_ID'), 'client_secret' => env('CLAVEUNICA_CLIENT_SECRET'), 'redirect' => env('CLAVEUNICA_REDIRECT_URI') // Configura servicio alternativo a ClaveÚnica 'auth_uri' => env('CLAVEUNICA_AUTH_URI', 'https://accounts.claveunica.gob.cl/openid/authorize'), 'token_uri' => env('CLAVEUNICA_TOKEN_URI', 'https://accounts.claveunica.gob.cl/openid/token'), 'user_uri' => env('CLAVEUNICA_USER_URI', 'https://www.claveunica.gob.cl/openid/userinfo'), ],