kovah/laravel-socialite-oidc

Laravel Socialite 的 OpenID Connect OAuth2 提供程序

v0.2.0 2024-09-18 21:45 UTC

This package is auto-updated.

Last update: 2024-09-18 21:47:14 UTC


README

Laravel Support: v9, v10, v11 PHP Support: 8.1, 8.2, 8.3

安装与基本使用

请参阅基本安装指南,然后按照以下特定提供程序的说明进行。

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 提供程序已被删除。相反,您可以在您的 AppServiceProviderboot 方法中使用 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 的工作