nddcoder/laravel-sso

简单的 Laravel SSO 集成(基于 zefy/laravel-sso)

v1.0.0 2019-05-18 10:16 UTC

This package is auto-updated.

Last update: 2024-09-18 23:06:27 UTC


README

本软件包基于 为 Laravel 提供简单的 PHP SSO 集成 软件包。

需求

  • Laravel 5.5+
  • PHP 7.1+

文档

请阅读 为 Laravel 提供简单的 PHP SSO 集成文档

安装

服务器

使用 composer 安装此软件包。

$ composer require nddcoder/laravel-sso

将配置文件复制到 Laravel 项目的 config/ 文件夹。

$ php artisan vendor:publish --provider="Nddcoder\LaravelSSO\SSOServiceProvider"

创建一个表,用于保存所有经纪人。

$ php artisan migrate --path=vendor/nddcoder/laravel-sso/database/migrations

编辑你的 app/Http/Kernel.php 文件,创建一个新的中间件,如下所示

'api' => [
    'throttle:60,1',
    'bindings',
],

'sso' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    'bindings',
],

//...

现在你应该创建经纪人。你可以使用以下 Artisan CLI 命令创建新的经纪人

$ php artisan sso:broker:create {name}

经纪人

使用 composer 安装此软件包。

$ composer require nddcoder/laravel-sso

将配置文件复制到 Laravel 项目的 config/ 文件夹。

$ php artisan vendor:publish --provider="Nddcoder\LaravelSSO\SSOServiceProvider"

config/laravel-sso.php 文件中的 type 值从 server 更改为 broker

.env 文件中设置 3 个新选项

SSO_SERVER_URL=
SSO_BROKER_NAME=
SSO_BROKER_SECRET=

SSO_SERVER_URL 是你的服务器的 http url,不带尾部斜杠。SSO_BROKER_NAMESSO_BROKER_SECRET 必须是存在于你的服务器 brokers 表中的数据。

编辑你的 app/Http/Kernel.php 文件,向 $routeMiddleware 数组中添加 \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class 中间件。它应该看起来像这样

protected $routeMiddleware = [
    'auto_login' => \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class,
    //...
];

然后可以这样使用:使用 auto_login 中间件

最后但同样重要的是,你需要编辑 app/Http/Controllers/Auth/LoginController.php。你应该在 LoginController 类中添加两个函数,这些函数将通过 SSO 服务器而不是经纪人页面来验证您的客户端。

protected function attemptLogin(Request $request)
{
    $broker = new \Nddcoder\LaravelSSO\LaravelSSOBroker;
    
    $credentials = $this->credentials($request);
    return $broker->login($credentials[$this->username()], $credentials['password']);
}

public function logout(Request $request)
{
    $broker = new \Nddcoder\LaravelSSO\LaravelSSOBroker;
    
    $broker->logout();
    
    $this->guard()->logout();
    
    $request->session()->invalidate();
    
    return redirect('/');
}

这就完成了。对于其他经纪人页面,你应该从开始重复所有操作,只需更改配置文件中的经纪人名称和密钥。

示例 .env 选项

SSO_SERVER_URL=https://server.test
SSO_BROKER_NAME=site1
SSO_BROKER_SECRET=892asjdajsdksja74jh38kljk2929023