纯基于PHP的单点登陆

Discuz有一个通行证,类似于单点登陆。不过我觉得单点登陆最好应该是一个独立的程序,和CAS一样 。由于所有的程序都是PHP的,所以就做了一个简单的单点登陆。借用了一下discuz的加密方法。

用户有以下几种情况会直接访问本系统:

1、用户直接访问passport,希望登陆

2、用户从passport_app上点击登陆按钮转过来的

3、用户从passport_app1转到passport_app2时候,passport_app2转过来的

4、用户直接输入访问passport_app的URL

2 3 4或者有referer,或者有fromurl的参数

====

1 使用通行证的应用程序上面的登陆按钮全部指向下面的链接: http://localhost/passport/login.php

2 如果用户已经登陆了,转到5

3 如果用户还没有登陆

转到一个登陆页面,要包含参数:

用户名,密码,fromurl(预处理过的refer)

提交到login.php?op=login

4 验证通过以后,设置自身的session或者cookies

5 根据用户http头里面的refer得到来源地址。

5.1 如果没有来源地址则显示本passport登陆成功页面,上面列出所有的passport应用

5.2 如果有refer,则跳回到refer的地址,即到6

6 转到通行证应用的passport_login.php页面,传递的参数包括:

◆$userinfo 一个数组,包含了用户名,角色,组等其它信息,一般不需要包含密码

◆$fromurl

◆$verify md5($auth.$fromurl) 保证用户信息没有被篡改

===============================

时间: 2024-08-07 19:31:27

纯基于PHP的单点登陆的相关文章

ASP.NET实现单点登陆(SSO)适用于哪些情况?

  第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web.config里Authentication节form设定的name信息,如 代码如下: 这里,.ASPNETAUTH就是这个Cookie的名字.通过在Request.Cookies集合里包含这个cookie,实现用户身份信息的传递.所以,共享身份验证信息的思路很简单:只要这个身份验证cookie

PHP版单点登陆实现方案的实例_php实例

摘要: 本文主要介绍了利用webservice,session,cookie技术,来进行通用的单点登录系统的分析与设计.具体实现语言为PHP.单点 登录,英文名为Single Sign On,简称为 SSO,是目前企业,网络业务的用户综合处理的重要组成部分.而SSO的定义,是在多个应用系统中,用户只需要登陆一次就可以访问所有相互信任的应用系 统. 动机: 用过ucenter的全站登录方式的朋友,应该都知道这是典型的观察者模式的解决方案.用户中心作为subject, 其所属observer的注册和

ASP.NET实现单点登陆(SSO)适用于多种情况_实用技巧

第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web.config里Authentication节form设定的name信息,如 复制代码 代码如下: <authentication mode="Forms"> <forms loginUrl="login.aspx" name=".ASPXAU

PHP版单点登陆实现方案的实例

摘要: 本文主要介绍了利用webservice,session,cookie技术,来进行通用的单点登录系统的分析与设计.具体实现语言为PHP.单点 登录,英文名为Single Sign On,简称为 SSO,是目前企业,网络业务的用户综合处理的重要组成部分.而SSO的定义,是在多个应用系统中,用户只需要登陆一次就可以访问所有相互信任的应用系 统. 动机: 用过ucenter的全站登录方式的朋友,应该都知道这是典型的观察者模式的解决方案.用户中心作为subject, 其所属observer的注册和

关于单点登陆的一些解决方法

解决  最近CSDN中很多朋友都在讨论关于多系统单点登陆的问题.现在总结自己使用过的方式看看能否给朋友们增加一些思路. 在处理问题前先讨论下关于所谓的"多系统"的情况,按道理来说多系统会出现以下若干个情况: 1.使用的技术不一样,应用的平台不一样:如使用JSP和ASP.NET开发的,他们的应用平台都会不一样 2.所在的物理服务器不一致.未部署在同个服务器集群中. 3.使用的权限验证方式不一样,比如说有的使用SESSION,COOKIE,还有的使用STATE服务. 而"单点登入

Moss 2010的单点登陆配置

Moss中的单点登陆方案是在MOSS系统中,将需要进行单点登陆整合的系统的帐号和密码通过加密保存在MOSS中,在登陆时通过中间页面将帐号和密码解密出来,再POST到其他系统完成登陆,当然如果子系统有更好的登陆接口将更加安全可靠:这种方案实现了单点登陆中的帐号映射问题,但并没有帮助用户实现跳转等功能,要求开发人员对各个系统自行处理登陆,并不算是一个真正的完整的单点登陆解决方案,但在企业内部系统整合时也存在一定的优势,即简单,子系统基本不用进行改动,如果单独开发单点登陆系统的话,避免不了的是对现有系

.NET单点登陆的实现方法及思路

这篇文章介绍了.NET单点登陆的实现方法及思路,有需要的朋友可以参考一下,希望对你有所帮助   系统的基本架构 我们假设一个系统System包含Service客户服务中心.Shop网上购物中心和Office网上办公中心三个独立的网站. Service管理客户的资料,登录和注销过程.不论客户访问System的任何一个页面,系统都会转到登录界面,在用户登录后,系统会自动转会到客户上 次请求的页面.并且用户此后可以在System中无缝切换.不需要再次进行登录.即在System中实现单点登录SSO(Si

腾讯企业邮箱单点登陆

问题描述 腾讯企业邮箱单点登陆 准备在现有的OA系统中加入腾讯企业邮箱模块,需求如下: 1.单位已开通腾讯企业邮箱,每位员工的邮箱地址均以其姓名全拼做邮箱帐号(如:zhangsan@xxx.com).并已经获取了接口key(假设key为"keyabc") 2.单位已部署了OA,我可以获取OA数据库中的用户帐号信息(也是以用户姓名全拼为OA登录帐号) 3.现在我想在OA中做个链接,通过此链接可以直接登录腾讯企业邮箱.登录过程中,后台程序直接将OA登录帐号(zhangsan).腾讯企业邮箱

哪儿大侠.NET单点登陆技术

问题描述 最近领导要我实现一个单点登陆技术,公司有三套BS系统,要求三个系统在同一个界面中显示,三个系统的登陆验证走的是同一个身份验证,界面如图,领导是学JAVA的,她说用POTAL技术,我搜了半天,百度不出啥东西来,请哪位大侠指教下 解决方案 本帖最后由 tsyj218 于 2016-03-18 10:29:05 编辑解决方案二:引用楼主tsyj218的回复: 领导是学JAVA的,她说用POTAL技术,我搜了半天,百度不出啥东西来,请哪位大侠指教下 这是13.14年前的扯淡概念,就是说做一个网