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

本作品采用《CC 协议》,转载必须注明作者和本文链接
❤️ 微信生态自动智能化方案加微信:hansonskr ❤️ 备注:vbot
本帖由系统于 5年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 28

直接用passport就可以了

5年前 评论

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

5年前 评论

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

5年前 评论
黑将军 3年前
Whoggie 2年前
qbhy

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

5年前 评论

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

5年前 评论

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

5年前 评论
Kurisu

看起来似乎是CAS么

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

5年前 评论
wenqing

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

5年前 评论

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

5年前 评论

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

5年前 评论
ThinkQ

:kissing_heart: :blush:

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

Old bro, stable! :smile:

5年前 评论
dividez

@Hanson dev 版本在哪里吖

5年前 评论

你好,請問laravel-sso能完整精確到用戶了嗎?
謝謝!

4年前 评论
xiaopi

@ab0029 兄弟,你说的passport是oauth2.0授权的方式登陆,这个是单点登陆,俩个概念

4年前 评论

@Hanson 作者大大,统一用户登陆有么 没看到dev版本

4年前 评论
自由与温暖是遥不可及的梦想

file 我..... 这是啥情况

3年前 评论
Hanson (楼主) 3年前
自由与温暖是遥不可及的梦想 (作者) 3年前
Hanson (楼主) 3年前

老哥,我已经尝试了。可以获取到ticket了,就不知道怎么搞了。可以教教我这小白吗?

3年前 评论

@daviLee 请问这个项目还维护么?获取到Ticket 后,如何登陆呢?

2年前 评论

@adymilk 看时间是不维护了,有成熟的扩展吗

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!