abdelhamiderrahmouni / laravel-sso
Simple Laravel SSO integration (A fork of nddcoder/laravel-sso based on and zefy/laravel-sso)
Requires
- php: >=7.1.3
- guzzlehttp/guzzle: ^6.3|^7.0|^7.1|^7.2|^7.3|^7.4|^7.5|^7.6|^7.7|^7.8|^7.9
- laravel/framework: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- zefy/php-simple-sso: ^1.0
Requires (Dev)
- rector/rector: ^2.0
This package is auto-updated.
Last update: 2025-02-17 07:20:00 UTC
README
This package based on Simple PHP SSO integration for Laravel package.
Requirements
- Laravel 5.5+ (5.5, 6.x, 7.x, 8.x, 9.x, 10.x, 11.x)
- PHP 7.1+|8.0+
Documentation
Please read Simple PHP SSO integration for Laravel docs.
Installation
Server
Install this package using composer.
$ composer require abdelhamiderrahmouni/laravel-sso
Copy config file to Laravel project config/
folder.
$ php artisan vendor:publish --provider="AbdelhamidErrahmouni\LaravelSSO\SSOServiceProvider"
Create table where all brokers will be saved.
$ php artisan migrate --path=vendor/abdelhamiderrahmouni/laravel-sso/database/migrations
Edit your app/Http/Kernel.php
by create new middleware like this:
'api' => [ 'throttle:60,1', 'bindings', ], 'sso' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, 'bindings', ], //...
Now you should create brokers. You can create new broker using following Artisan CLI command:
$ php artisan sso:broker:create {name}
Broker
Install this package using composer.
$ composer require abdelhamiderrahmouni/laravel-sso
Copy config file to Laravel project config/
folder.
$ php artisan vendor:publish --provider="AbdelhamidErrahmouni\LaravelSSO\SSOServiceProvider"
Change type
value in config/laravel-sso.php
file from server
to broker
.
Set 3 new options in your .env
file:
SSO_SERVER_URL= SSO_BROKER_NAME= SSO_BROKER_SECRET=
SSO_SERVER_URL
is your server's http url without trailing slash. SSO_BROKER_NAME
and SSO_BROKER_SECRET
must be data which exists in your server's brokers
table.
Edit your app/Http/Kernel.php
by adding \AbdelhamidErrahmouni\LaravelSSO\Middleware\SSOAutoLogin::class
middleware to $routeMiddleware
array. It should look like this:
protected $routeMiddleware = [ 'auto_login' => \AbdelhamidErrahmouni\LaravelSSO\Middleware\SSOAutoLogin::class, //... ];
Last but not least, you need to edit app/Http/Controllers/Auth/LoginController.php
. You should add two functions into LoginController
class which will authenticate your client through SSO server but not your Broker page.
protected function attemptLogin(Request $request) { $broker = new \AbdelhamidErrahmouni\LaravelSSO\LaravelSSOBroker; $credentials = $this->credentials($request); return $broker->login($credentials[$this->username()], $credentials['password']); } public function logout(Request $request) { $broker = new \AbdelhamidErrahmouni\LaravelSSO\LaravelSSOBroker; $broker->logout(); $this->guard()->logout(); $request->session()->invalidate(); return redirect('/'); }
That's all. For other Broker pages you should repeat everything from the beginning just changing your Broker name and secret in configuration file.
Example .env
options:
SSO_SERVER_URL=https://server.test SSO_BROKER_NAME=site1 SSO_BROKER_SECRET=892asjdajsdksja74jh38kljk2929023