Downloads
Stars
Version
This package based on Simple PHP SSO integration for Laravel package.
Please read Simple PHP SSO integration for Laravel docs.
Install this package using composer.
$ composer require nddcoder/laravel-sso
Copy config file to Laravel project config/
folder.
$ php artisan vendor:publish --provider="Nddcoder\LaravelSSO\SSOServiceProvider"
Create table where all brokers will be saved.
$ php artisan migrate --path=vendor/nddcoder/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}
Install this package using composer.
$ composer require nddcoder/laravel-sso
Copy config file to Laravel project config/
folder.
$ php artisan vendor:publish --provider="Nddcoder\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 \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class
middleware to $routeMiddleware
array. It should look like this:
protected $routeMiddleware = [
'auto_login' => \Nddcoder\LaravelSSO\Middleware\SSOAutoLogin::class,
//...
];
Then use like this:
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 \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('/');
}
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