This is a fork of xdubois/laravel-socialite-oidc and kovah/laravel-socialite-oidc, all credit goes to them, I just needed to make some small tweaks.
Please see the Base Installation Guide, then follow the provider specific instructions below.
'oidc' => [
'base_url' => env('OIDC_BASE_URL'),
'client_id' => env('OIDC_CLIENT_ID'),
'client_secret' => env('OIDC_CLIENT_SECRET'),
'redirect' => env('OIDC_REDIRECT_URI'),
],The base URL must be set to the URL of your OIDC endpoint excluding the .well-known/openid-configuration part. For example:
If https://auth.company.com/application/linkace/.well-known/openid-configuration is your OIDC configuration URL, then https://auth.company.com/application/linkace must be your base URL.
Configure the package's listener to listen for SocialiteWasCalled events.
In Laravel 11, the default EventServiceProvider provider was removed. Instead, add the listener using the listen method on the Event facade, in your AppServiceProvider boot method.
Event::listen(function (\SocialiteProviders\Manager\SocialiteWasCalled $event) {
$event->extendSocialite('auth0', \SocialiteProviders\Auth0\Provider::class);
});Add the event to your listen[] array in app/Providers/EventServiceProvider. See the Base Installation Guide for detailed instructions.
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// ... other providers
\SocialiteProviders\OIDC\OIDCExtendSocialite::class.'@handle',
],
];You should now be able to use the provider like you would regularly use Socialite (assuming you have the facade installed):
return Socialite::driver('oidc')->redirect();idnameemail
More fields are available under the user subkey:
$user = Socialite::driver('oidc')->user();
$locale = $user->user['locale'];
$email_verified = $user->user['email_verified'];You may extend the default scopes (openid email profile) by adding a scopes option to your OIDC service configuration and separate multiple scopes with a space:
'oidc' => [
'base_url' => env('OIDC_BASE_URL'),
'client_id' => env('OIDC_CLIENT_ID'),
'client_secret' => env('OIDC_CLIENT_SECRET'),
'redirect' => env('OIDC_REDIRECT_URI'),
'scopes' => 'groups roles',
// or
'scopes' => env('OIDC_SCOPES'),
],Based on the work of jp-gauthier