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 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
关于 LearnKu
可以,老铁
顶一下
直接用passport就可以了
@ab0029 说明你还不知道 SSO 是干嘛的
@Hanson passport就不能用来当单点登录了,呵呵,实际项目早就用上了
我觉得可以衍生成一个用户中心服务,所有应用都接入用户中心,用户中心分发 app ID等应用专属信息,然后所有应用都可以理解或者说解析用户中心分发的 用户token,就实现了跨应用授权。
@96qbhy 最终还是要回到需要 SSO 登录的项目接入,其实就是当前这种形式了
@96qbhy 在往这方面开发,就到了微服务了,但我没做过跨应用授权。可能项目小吧
看起来似乎是CAS么
看起来CAS应该算是SSO的子集
这个用户是cas那种形式吗,这个是服务端还是客户端的呢?
@wenqing 老哥看看文档就知道了
统一用户登陆,需要多久呢?
:kissing_heart: :blush:
@a512395193 那我尽快下周做一下,欢迎进群督促我 :joy:
@a512395193 dev版本已经加上了,可以测试一下
@Hanson 以下测试 当前用户返回是某个 sso 应用的信息,不是应该返回用户的个人信息吗?
@a512395193 返回是 sso 没错,你需要修改关联sso与用户的关系
楼主为什么composer引入的扩展少了middleware这个文件夹
@xionger 不要用 phpcomposer 的源,使用 laravel-china 或者 官方源都可以
Old bro, stable! :smile:
@Hanson dev 版本在哪里吖
你好,請問laravel-sso能完整精確到用戶了嗎?
謝謝!
@ab0029 兄弟,你说的passport是oauth2.0授权的方式登陆,这个是单点登陆,俩个概念
@Hanson 作者大大,统一用户登陆有么 没看到dev版本
老哥,我已经尝试了。可以获取到ticket了,就不知道怎么搞了。可以教教我这小白吗?
@daviLee 请问这个项目还维护么?获取到Ticket 后,如何登陆呢?
@adymilk 看时间是不维护了,有成熟的扩展吗