Laravel-sso 给你的系统增加单点登录

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

当公司系统开始多了的时候,SSO 就显得尤为重要了,例如管理后台需要无障碍跳转到短信系统、订单系统等。

GitHub: https://github.com/cblink/laravel-sso

当前这版本做的还算比较简单,只是登录到某个 sso 应用,没有精确到用户,如果认为有需要登录到个人的同学可以说声,加上去也是比较快的。

安装

composer require cblink/laravel-sso:dev-master -vvv

配置

发布 config/sso.php 以及 migration 迁移文件

php artisan vendor:publish --provider="Cblink\Sso\SsoServiceProvider"

跑迁移:

php artisan migrate

这个迁移用于生成登录 SSO 的授权验证表

创建 SSO 路由

php artisan sso:route

可以自行通过命令创建 SSO 应用

php artisan sso:create

config/auth.php 添加 SSO 的配置:

'guards' => [
    'sso' => [
        'driver' => 'session',
        'provider' => 'sso',
    ],
],
'providers' => [
    'sso' => [
        'driver' => 'sso',
        'table' => 'sso',
    ],
],

用法

以下只是示例,可自行凭想象力修改

// 需要 SSO 登录的客户端添加
Route::get('sso', function () {
    $client = new \GuzzleHttp\Client();

    $response = $client->get('http://yourdomain/sso/getTicket?'.http_build_query([
        'app_id' => 'your_app_id',
        'secret' => 'your_secret',
    ]));

    $result = json_decode((string)$response->getBody(), true);

    if ($ticket = $result['ticket'] ?? null) {
        return redirect('http://yourdomain/sso/login?ticket='.$ticket);
    }
});

GitHub: https://github.com/cblink/laravel-sso

欢迎来 star

本文章首发在 Laravel China 社区

php吹水交流群 570769430