jhnbrn90/socialite-passport

使用 Laravel Passport 身份提供者实现简易的 Socialite 身份验证。

1.0.5 2020-06-04 11:27 UTC

This package is auto-updated.

Last update: 2024-09-04 21:26:02 UTC


README

Latest Version on Packagist Total Downloads

此软件包提供了一个通过使用 Laravel Passport 的中央身份提供者轻松验证用户的方法。

换句话说,允许用户使用在 auth.example.com(使用 Laravel Passport)上的账户登录到 "客户端" 应用 app1.example.comapp2.example.com

此软件包旨在简化 "客户端" 应用中的 Socialite 集成,并假定已经设置了带有 Laravel Passport 的 "ID 提供者"。

通用工作流程

  • 在 "ID 提供者" 中创建新的 OAuth 客户端
  • 在 "客户端" 的 .env 文件中配置 keysredirect urlhost
  • 配置应传递已验证 OAuth $user 对象的 Controller
  • 在 "客户端" 中注册或登录 $user

有关更多详细信息,请参阅下面的 安装使用 部分。

安装

您可以通过 composer 安装此软件包

composer require jhnbrn90/socialite-passport

发布配置

php artisan vendor:publish --provider="JhnBrn90\SocialitePassport\SocialitePassportServiceProvider" --tag="config"

配置应处理已验证用户的控制器和方法。此外,您还可以自定义用于登录用户的路由和路由名称。

<?php

return [
    'controller' => [
        'class' => \App\Http\Controllers\Auth\LoginController::class,
        'method' => 'loginWithPassport',
    ],

    'route' => [
        'name' => 'login',
        'uri' => '/login',
    ],
];

接下来,应在 .env 文件中添加以下环境变量,其中 CLIENT_IDCLIENT_SECRET 来自 Laravel Passport 身份提供者。变量 REDIRECT_URI 将自动映射路由文件中的正确回调路由。因此,这可以是任何您想要的(约定为使用 login/[服务名称]/callback)。

LARAVELPASSPORT_CLIENT_ID=
LARAVELPASSPORT_CLIENT_SECRET=
LARAVELPASSPORT_REDIRECT_URI=/login/callback
LARAVELPASSPORT_HOST=https://auth.example.com

使用

示例配置(上面)假定您已将 loginWithPassport() 方法添加到默认的 LoginController。此方法将注入 $user 对象(见 https://socialiteproviders.netlify.com/providers/laravel-passport.html)。

class LoginController extends Controller 
{
    public function loginWithPassport($user) // gets authenticated $user injected
    {
        // perform your logic here to create or log in a new user

        // example:
        User::firstOrCreate(['name' => $user['name'], 'email' => ...]);
    }
}

OAuth2\User 对象 $user 的示例(作为 JSON)

{
  "accessTokenResponseBody": {
    "token_type": "Bearer",
    "expires_in": 31622400,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI4IiwianRpIjoiM2ZjODMwOTE3OTBmMmJmZWRiY2JhMzZiMGUyOGYzNzc1YTIyNThhMWI0OGMzOWM0MDUyMmRjN2IzZDE2NWU5MmQ4MzA0YjYwMTFkNTY4MjQiLCJpYXQiOjE1NzU5MDExNDAsIm5iZiI6MTU3NTkwMTE0MCwiZXhwIjoxNjA3NTIzNTQwLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.RVnhK1qTjNOvcI-BoYGUO_jCJ8oe_wBhgIyxoN-x00Yu2_c3Vco-y1b765AV1033Jh-_tz--ZNvqM1QoOc6JBDbXAmFoS_cPKfvdfPdNPMl-VgHsnl4OmfOFKlam7JW7UIWgDS0GFbAFa0KZK_3IIkfKLG8bUFc-9DyVPpXJgkShAO6ZdTolVPHiT4FGPAIXhrpbADkGncEng8QlrwRVXyHIjVwsMYAC7WU-4eVjyL45N0YzZPmTXxLHAedpPa6YqbVAY6OOBajhyah9b4bwjI1j5o11inZkcLpbQIxBWd7wivtFB28duGDOMmDSurCIseO3iDKLUC-ppH27hmwSG2JwENCde1SBNCjEkn6q6mINKTfdp8W5LJUIogHnxfsRQH4LAXvOlx_RkA9vOedV18TocH7uMnGK34IDP2KzWhu6EYgGSNnXi5TCLNES-Hm7CJN5YrU4FrKiOmdi9ttg0YjzTFE5TkpHvlKu6Ym_qadnygUnmZl_Gd5m0_7iV9vqhb0S5-dTh8RkoUmzac-lo8d3e4pdhJ1p3OrrXklO41Bs7AwpMM-5kcxSwwnwqDjLOrO2O5Knl3Kf8E0dVo4CQpq3Ry9SydAhEqEcjQeMNXiShuggwolVrE_WLnC4nW_VpQIvYlvcT23H2PX_Xdj1w8UVEElUrgFVYrzNoBBrJxM",
    "refresh_token": "def50200847d476003f4cf5bd36a49a9dccb3d0a010eb3a4ff030d5b4eb0aae30bcd9cbf1c65cab34d6309acf2757e37286e1c9db963bfad72dc40f51ff531b45d3bb329f95b6353659446fb0d748b4879aabd335c2642ad6c7eb1b0e685552ecd8c35fb858e15a8141a7c0f964625e20452ef05e47e1e980d3f0a5a5ebafc173bf1dc57f88fbb231723a3e04b362983632d84a411c3691a07fd391db6dd415671fe94706d4b47c2fc008166230ceb14b2b9bc6031e591677c485b9cfd2715e93d47cc0407dcb0e69487329020ba4ac3899b4975fcbbc9e3ef3fc8368610cbbde074345621bfecde465938cee6372ab033ea8ded4d31892d4d5d6fb8b099b0c29205faca5c248ad1eb66329b6f328966bbb987a7a761e81b3774d6ab9952b9c1d5f62fefc9df380227e488bdc754a1b22a7d989a906b3cdd22946b9d8358e13f52e4bae189c59ce7263ad988328edb8f9d8556aaecf8b7771be539b745893f8d9e"
  },
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI4IiwianRpIjoiM2ZjODMwOTE3OTBmMmJmZWRiY2JhMzZiMGUyOGYzNzc1YTIyNThhMWI0OGMzOWM0MDUyMmRjN2IzZDE2NWU5MmQ4MzA0YjYwMTFkNTY4MjQiLCJpYXQiOjE1NzU5MDExNDAsIm5iZiI6MTU3NTkwMTE0MCwiZXhwIjoxNjA3NTIzNTQwLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.RVnhK1qTjNOvcI-BoYGUO_jCJ8oe_wBhgIyxoN-x00Yu2_c3Vco-y1b765AV1033Jh-_tz--ZNvqM1QoOc6JBDbXAmFoS_cPKfvdfPdNPMl-VgHsnl4OmfOFKlam7JW7UIWgDS0GFbAFa0KZK_3IIkfKLG8bUFc-9DyVPpXJgkShAO6ZdTolVPHiT4FGPAIXhrpbADkGncEng8QlrwRVXyHIjVwsMYAC7WU-4eVjyL45N0YzZPmTXxLHAedpPa6YqbVAY6OOBajhyah9b4bwjI1j5o11inZkcLpbQIxBWd7wivtFB28duGDOMmDSurCIseO3iDKLUC-ppH27hmwSG2JwENCde1SBNCjEkn6q6mINKTfdp8W5LJUIogHnxfsRQH4LAXvOlx_RkA9vOedV18TocH7uMnGK34IDP2KzWhu6EYgGSNnXi5TCLNES-Hm7CJN5YrU4FrKiOmdi9ttg0YjzTFE5TkpHvlKu6Ym_qadnygUnmZl_Gd5m0_7iV9vqhb0S5-dTh8RkoUmzac-lo8d3e4pdhJ1p3OrrXklO41Bs7AwpMM-5kcxSwwnwqDjLOrO2O5Knl3Kf8E0dVo4CQpq3Ry9SydAhEqEcjQeMNXiShuggwolVrE_WLnC4nW_VpQIvYlvcT23H2PX_Xdj1w8UVEElUrgFVYrzNoBBrJxM",
  "refreshToken": "def50200847d476003f4cf5bd36a49a9dccb3d0a010eb3a4ff030d5b4eb0aae30bcd9cbf1c65cab34d6309acf2757e37286e1c9db963bfad72dc40f51ff531b45d3bb329f95b6353659446fb0d748b4879aabd335c2642ad6c7eb1b0e685552ecd8c35fb858e15a8141a7c0f964625e20452ef05e47e1e980d3f0a5a5ebafc173bf1dc57f88fbb231723a3e04b362983632d84a411c3691a07fd391db6dd415671fe94706d4b47c2fc008166230ceb14b2b9bc6031e591677c485b9cfd2715e93d47cc0407dcb0e69487329020ba4ac3899b4975fcbbc9e3ef3fc8368610cbbde074345621bfecde465938cee6372ab033ea8ded4d31892d4d5d6fb8b099b0c29205faca5c248ad1eb66329b6f328966bbb987a7a761e81b3774d6ab9952b9c1d5f62fefc9df380227e488bdc754a1b22a7d989a906b3cdd22946b9d8358e13f52e4bae189c59ce7263ad988328edb8f9d8556aaecf8b7771be539b745893f8d9e",
  "expiresIn": 31622400,
  "id": 1,
  "nickname": null,
  "name": "John",
  "email": "johnbraun@pm.me",
  "avatar": null,
  "user": {
    "id": 1,
    "name": "John",
    "email": "johnbraun@pm.me",
    "email_verified_at": null,
    "created_at": "2019-12-08 06:38:54",
    "updated_at": "2019-12-08 06:38:54"
  }
}

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 johnbraun@pm.me 联系,而不是使用问题跟踪器。

鸣谢