nddcoder / laravel-sso
简单的 Laravel SSO 集成(基于 zefy/laravel-sso)
Requires
- php: >=7.1.3
- guzzlehttp/guzzle: ^6.3
- laravel/framework: ^5.5
- zefy/php-simple-sso: ^1.0
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_NAME
和 SSO_BROKER_SECRET
必须是存在于你的服务器 brokers
表中的数据。
编辑你的 app/Http/Kernel.php
文件,向 $routeMiddleware
数组中添加 \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class
中间件。它应该看起来像这样
protected $routeMiddleware = [ 'auto_login' => \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class, //... ];
最后但同样重要的是,你需要编辑 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