这篇文章主要介绍了php实现的sso单点登录系统接入功能,简单分析了sso单点登录系统接入的原理与php相关实现技巧,需要的朋友可以参考下
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一,下面我们来看看吧。
简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了。
SSO 登录请求接口往往是接口加上一个回调地址,访问这个地址会跳转到回调地址并带上一个 ticket 参数,拿着这个 ticket 参数再请求接口可以获取到用户信息,如果存在用户则自动登录,不存在就新增用户并登录。
比如这个 SSO 模型实现了两个方法,一个是获取接口 url,一个是凭 ticket 获取用户信息:
立即学习“PHP免费学习笔记(深入)”;
interface SSOLogin
{
/**
* 获取登录用户信息
* @param $ticket
* @return mixed
*/
public function getInfoFromTicket($ticket);
/**
* 单点登录授权地址
* @return mixed
*/
public function getAuthUrl();
}再来看看控制器的主要方法,比如回调地址是跳转到控制器 http://www.example.com/sso/check?ticket=xxxx
/**
* 检测是否单点登录
* @return bool|string
*/
public function actionCheck()
{
$ticket = Yii::$app->getRequest()->get('ticket');
if (!$ticket) {
return $this->renderAuthError('请先授权', sprintf('<a href="%s">点击登录单点登录系统</a>', SSOlogin::getInstance()->getAuthUrl()));
}
$userInfo = SSOlogin::getInstance()->getInfoFromTicket($ticket);
if (empty($userInfo['username'])) {
return $this->renderAuthError('请先授权', sprintf('<a href="%s">点击登录单点登录系统</a>', SSOlogin::getInstance()->getAuthUrl()));
}
$username = $this->getUserName($userInfo['username']);
$user = User::find()->canLogin()->username($username)->one();
if (!$user) {
$newUser = [];
$newUser['username'] = $userInfo['username'];
$newUser['email'] = $this->getUserName($userInfo['username']);
$newUser['role'] = User::ROLE_DEV;
$newUser['is_email_verified'] = 1;
$newUser['realname'] = $userInfo['truename'];
$user = $this->addUser($newUser);
}
$isLogin = Yii::$app->user->login($user, 3600 * 24 * 30);
if ($isLogin) {
$this->redirect('/task/index');
}
return true;
}大概看看这个控制器逻辑就明白了。SSO 接口起到的作用就是获取用户信息,拿这个用户信息跟系统用户表对比,存在用户则进行登录,不存在创建用户并登录。
项目介绍: eShop是基于eFrameWork低代码开发平台搭建的微信公众号商城系统,主要功能包括:产品、订单、购物车、收藏、收货地址。已集成微信登录、微信支付、分享等接口。更多功能可自行二次开发实现。 当前发布的数据库有两个版本,SQLServer和SQLite(无需安装数据库),默认为SQLite,根据实际需要切换。 项目版本:VS2012+, 数据库版本:S
14
这是一个内部的单点系统,集成到后台,可能其他的 SSO 跟这不太一样,但基本原理过程差不多。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
以上就是php实现的SSO单点登录系统接入功能实例分析的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号