`

【转】基于PHPRPC的单点登录(SSO)的实现

阅读更多
PHPRPC是什么:
PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。

因为PHPRPC有以上诸多特性,那么我们的SSO也可以实现安全、快捷、跨域。

所以单点登录,就是用户只需要在中心认证服务器登录一次,然后浏览器通过中心认证服务器返回的信息轮询访问应用系统进行模拟登录,之后用户再访问应用系统的时候不需要登录就能访问了。

其实现原理就是浏览器(用phprpc for javascript)请求中心认证服务器(phprpc for php),通常此时的浏览器就是一个登录页面,浏览器将用户名和密码传递给中心认证服务器,中心认证服务器验证成功之后,查找数据库里此用户名和密码对应的信息,根据这些信息生成一个令牌(token)返回给浏览器,浏览器在用token访问应用系统,应用系统收到token之后,再用收到的token访问中心认证服务器,中心认证服务器通过这个token查找数据库,从而能够找到对应应用系统的用户名和密码,然后将这个用户名和密码返回给应用系统,应用系统再收到的用户名和密码进行登录(通常就是一次写SESSION或者COOKIE的过程)

借助一下数据库设计图,应该更好理解

就像设计图中所展示的,统一认证服务器收到浏览器通过javascript传递过来的用户名和密码检索“认证服务器用户表”,从而得到“用户ID”,根据“用户ID”再去检索“应用系统用户表”,然后就会得到一条或多条记录,把每一个结果都在“临时会话表”中生成一条记录,这里的“会话ID”是表的主键,也就是我们的token,而第二个字段id是对应的“应用系统用户表”的主键,还有一点比较重要,就是根据“应用系统ID”检索“应用系统表”,从而获得应用系统的地址。

然后统一认证服务器将token与应用系统的访问地址组成一个新的数组返回给浏览器

然后浏览器再运行JS将传回来的token作为参数访问应用系统服务端。

应用系统使用token访问统一认证服务器从而获取用户名和密码,获得用户名密码之后就完成了登录。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics