revenuefm/ssoguard

Laravel SSO 包

v0.0.11 2018-10-30 08:37 UTC

This package is auto-updated.

Last update: 2024-09-28 04:25:39 UTC


README

此包受到 StackOverflow 上此问题启发的。

此包旨在帮助实现以下情况的用户

  1. 基于 Laravel 的身份验证服务器(中央用户目录,使用 laravel/passport 的 OAuth2)
  2. 基于 Laravel 或 Lumen 的资源服务器(Web 应用,没有用户表)
  3. 客户端 JS 应用(Nuxt、React...)

注意 值得注意的是,必须存在用户模型。您只需要更改 Auth 服务器所在数据库的连接。

工作流程是什么?

  1. 客户端的登录按钮将跳转到身份验证服务器,OAuth2 客户端经过用户授权并获取授权码后返回到客户端。
  2. 然后客户端使用请求将数据发送到资源服务器,同时向资源服务器提供凭证。
  3. 资源服务器使用此守卫授权请求,以便您可以保持您的 API 安全。

安装

通过 composer

$ composer require revenuefm/ssoguard

安装包后发布配置

php artisan vendor:publish --tag=ssoguard-config

打开配置文件,将路由添加到您在身份验证服务器上获取用户对象的 me 对象中。例如 https://your-domain.com/api/user

使用守卫

很简单,将配置文件中 auth 的 API 守卫驱动程序更改为

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'ssoguard',
            'provider' => 'users',
        ],
    ],

之后,您可以使用标准的 API 中间件

Route::get('my/secure/api-url', 'MyController@index')->middleware('auth:api');

用户对象将可以从

$request->user()

作为标准对象使用。

如果有人想扩展此包并使其变得更好,请参与进来。

最好的!