kovah / laravel-socialite-oidc
Laravel Socialite 的 OpenID Connect OAuth2 提供程序
v0.2.0
2024-09-18 21:45 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/http: ^9.0 | ^10.0 | ^11.0
- illuminate/support: ^9.0 | ^10.0 | ^11.0
- socialiteproviders/manager: ^4.0
Conflicts
- jp-gauthier/socialiteproviders-oidc: *
README
安装与基本使用
请参阅基本安装指南,然后按照以下特定提供程序的说明进行。
向 config/services.php
添加配置
'oidc' => [ 'base_url' => env('OIDC_BASE_URL'), 'client_id' => env('OIDC_CLIENT_ID'), 'client_secret' => env('OIDC_CLIENT_SECRET'), 'redirect' => env('OIDC_REDIRECT_URI'), ],
基本 URL 必须设置为您的 OIDC 端点的 URL,但不包括 .well-known/openid-configuration
部分。例如:如果 https://auth.company.com/application/linkace/.well-known/openid-configuration
是您的 OIDC 配置 URL,则 https://auth.company.com/application/linkace
必须是您的基 URL。
添加提供程序事件监听器
配置包的监听器以监听 SocialiteWasCalled
事件。
Laravel 11+
在 Laravel 11 中,默认的 EventServiceProvider
提供程序已被删除。相反,您可以在您的 AppServiceProvider
的 boot
方法中使用 Event
门面上的 listen
方法添加监听器。
Event::listen(function (\SocialiteProviders\Manager\SocialiteWasCalled $event) { $event->extendSocialite('auth0', \SocialiteProviders\Auth0\Provider::class); });
Laravel 10 或以下
将事件添加到 app/Providers/EventServiceProvider
中的您的 listen[] 数组中。有关详细说明,请参阅基本安装指南。
protected $listen = [ \SocialiteProviders\Manager\SocialiteWasCalled::class => [ // ... other providers \SocialiteProviders\OIDC\OIDCExtendSocialite::class.'@handle', ], ];
使用方法
现在您应该能够像通常使用 Socialite 一样使用提供程序(假设您已安装了门面)
return Socialite::driver('oidc')->redirect();
返回的用户字段
id
name
email
在 user
子键下还有更多字段可用
$user = Socialite::driver('oidc')->user(); $locale = $user->user['locale']; $email_verified = $user->user['email_verified'];
自定义作用域
您可以通过向您的 OIDC 服务配置中添加一个 scopes
选项来扩展默认作用域(openid email profile
),并用空格分隔多个作用域
'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'), ],
基于 jp-gauthier 的工作