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

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

php吹水交流群 570769430

本帖由系统于 3个月前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 21

可以,老铁

3个月前

顶一下

3个月前

直接用passport就可以了

2个月前
Hanson

@ab0029 说明你还不知道 SSO 是干嘛的

2个月前

@Hanson passport就不能用来当单点登录了,呵呵,实际项目早就用上了

2个月前
96qbhy

我觉得可以衍生成一个用户中心服务,所有应用都接入用户中心,用户中心分发 app ID等应用专属信息,然后所有应用都可以理解或者说解析用户中心分发的 用户token,就实现了跨应用授权。

2个月前
Hanson

@96qbhy 最终还是要回到需要 SSO 登录的项目接入,其实就是当前这种形式了

2个月前

@96qbhy 在往这方面开发,就到了微服务了,但我没做过跨应用授权。可能项目小吧

2个月前
Kurisu

看起来似乎是CAS么

看起来CAS应该算是SSO的子集

2个月前
wenqing

这个用户是cas那种形式吗,这个是服务端还是客户端的呢?

2个月前
Hanson

@wenqing 老哥看看文档就知道了

2个月前

统一用户登陆,需要多久呢?

2个月前

:kissing_heart: :blush:

2个月前
Hanson

@a512395193 那我尽快下周做一下,欢迎进群督促我 :joy:

2个月前
Hanson

@a512395193 dev版本已经加上了,可以测试一下

2个月前

@Hanson 以下测试 当前用户返回是某个 sso 应用的信息,不是应该返回用户的个人信息吗?

2个月前
Hanson

@a512395193 返回是 sso 没错,你需要修改关联sso与用户的关系

2个月前

楼主为什么composer引入的扩展少了middleware这个文件夹

2个月前
Hanson

@xionger 不要用 phpcomposer 的源,使用 laravel-china 或者 官方源都可以

2个月前

Old bro, stable! :smile:

2个月前
dividez

@Hanson dev 版本在哪里吖

1周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!