php session实现单点登录单点登录系统的分析与设计与分析(一)php session登录
2022-02-13
概括:
本文主要介绍了一个通用的单点登录系统的分析与设计。具体实现语言为PHP。单点登录,英文名称Sign On小程序开发,缩写为SSO,是企业和网络服务综合用户处理的重要组成部分。SSO的定义是在多个应用系统中,用户只需要登录一次,就可以访问所有相互信任的应用系统。
动机:
用过全站登录方式的朋友应该都知道,这是典型的观察者模式方案。作为用户中心,其财物的注册和删除在后台统一进行。并且每个子应用站点对应一个。用户中心的每一次登录动作都会触发js脚本回调w3c标准子站点登录接口(api/uc.php)。
这种方式的缺点,我觉得主要有两点: 1. 当子站点过多时,回调接口会相应增加。这是由于分布式子站点数量的限制。如何控制登录效率不会太低,不确定;2.当某个变电站的回调接口出现问题时,默认登录进程会卡住(登录程序的执行时间可以限制,但是变电站后面的变电站回调接口对应的问题将被调用。不再。
基于以上问题,在实际开发过程中,我设计了另一套单点登录系统。
一. 登录原理说明
单点登录的技术实现机制:用户第一次访问应用系统1时,由于尚未登录,会被引导到认证系统登录;认证系统根据用户提供的登录信息进行身份验证。为进行验证,应将身份验证凭据返回给用户--;当用户访问其他应用程序时,他们会将其作为自己的身份验证凭据。应用系统接受请求后,将其发送给认证系统进行验证。检查合法性。若验证通过网站制作,用户无需重新登录即可访问应用系统2和应用系统3。
可见,要实现SSO,需要以下主要功能:
a) 所有应用系统共享一个身份认证系统;
b) 所有应用系统都可以识别和提取信息;
c) 应用系统可以识别已登录的用户,并自动判断当前用户是否已登录,从而完成单点登录功能
基于以上基本原理,我设计了一套php语言的单点登录系统程序,已投入官方生成服务器运行。本系统程序以整个系统的唯一id为媒介,获取当前在线用户的全站信息(登录状态信息等需要处理的全站信息)。
二. 进程描述:
登录流程:
1. 第一次登录站点:
a) 用户输入用户名+密码,向用户验证中心发送登录请求
b) 当前登录站点,通过请求,用户验证中心验证用户名和密码的合法性。如果验证通过,则生成识别当前会话的用户php session实现单点登录,并将当前登录分站的站点标识记录到用户中心,最后
c) 将获取的用户数据返回给子站。如果验证失败,则返回相应的错误状态码。
d) 根据上一步请求返回的结果,当前分站为用户进行登录处理:如果状态码表示成功,则通过本站保存当前站点,本站记录用户登录地位。如果状态码表示失败,则会给用户相应的登录失败提示。
2. 在登录状态下,用户转到另一个子:
a) 通过本站或验证用户登录状态:如果验证通过,则进入正常的站点处理程序;否则,用户中心会验证用户的登录状态(发送到用户验证中心)php session实现单点登录,如果验证通过,则处理返回的用户信息。本地登录处理,否则用户未登录。
注销过程
a) 当前登出站,清除用户网站的登录状态和本地保存的用户唯一随机id
b) 通过接口清除全站记录的全站唯一随机id。界面返回,注销其他注册子站的密码,本站输出该密码。
c) js代码访问对应站W3C标准的登出脚本
三. 代码说明:
本文涉及的相关代码已打包上传。有兴趣的可以点击文末下载链接下载。
1