添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本博文主要针对多个相互信任的网站实现单点login后其它站点也login,单点logout后其它站点也logout的解决方案。

本方案学习自: Simple Single Sign-On for PHP (Ajax compatible) ,但实现方式与之有些不同:

  • Broker可以存储用户信息,这样,当用户在登陆Broker之后所进行的操作都不需要请求SSO以检查用户是否退出了;
  • 当用户从某个Broker退出时,该Broker先自己执行用户退出工作,之后发送退出请求到SSO,SSO通知其它已经登陆了的Broker执行退出工作。
  • 用户访问站点首页;
  • 站点检测到客户端没有 token ,于是设置 token 并重定向用户到 SSO Server 进行绑定;
  • 客户端携带 Broker token 请求SSO服务器;
  • SSO Server 完成绑定后,重定向用户到原来的页面;
  • 客户端请求 index.php
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 返回用户未登录;
  • Broker 返回未登陆的 index.php 页面;
  • 客户端请求 login.php
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 返回用户未登录;
  • Broker 返回 login.php 页面;
  • 用户填写表单,提交;
  • Broker 通过CURL请求 SSO Server 验证;
  • 验证通过, SSO Server 返回成功,并且携带用户信息;
  • Broker 存储用户信息,并重定向客户端到 user.php
  • 客户端请求 user.php
  • Broker 返回请求成功。
  • 在首次访问后,访问信任站点:

  • 客户端访问信任站点首页;
  • Broker 检测到客户端没有自己的token,于是设置 token 并重定向客户端到 SSO Server 进行绑定;
  • 客户端携带 Broker token 请求SSO服务器;
  • SSO Server 完成对客户端的绑定并重定向用户回原来的页面;
  • 客户端请求 index.php
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 返回用户登录了,且携带用户信息;
  • Broker 存储用户信息,并返回登陆了的 index.php 页面;
  • 客户端请求 user.php
  • Broker 返回请求成功;
  • 客户端请求退出;
  • Broker 发送退出请求到 SSO Server
  • SSO Server 返回成功;
  • Broker 重定向客户端到 login.php
  • 使用AJAX绑定token的站点(首次访问):

  • Broker 检测到用户未登陆,返回未登陆的 index.php 页面;
  • 客户端通过AJAX请求获取绑定的URL;
  • Broker 检测到客户端没有自己的token,于是设置token并返回绑定链接;
  • 客户端通过加载一张空的图片来请求 SSO Server 绑定;
  • SSO Server 完成绑定,返回空的图片;
  • 客户端通过AJAX向 Broker 请求用户信息;
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 返回用户未登陆;
  • Broker 返回未登录,无用户信息;
  • 客户端请求 login.php
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 返回用户未登录;
  • Broker 返回 login.php 页面;
  • 用户填写表单,提交;
  • Broker 通过CURL请求 SSO Server 验证;
  • 验证通过, SSO Server 返回成功,并且携带用户信息;
  • Broker 存储用户信息,并重定向客户端到 user.php
  • 客户端请求 user.php
  • Broker 返回请求成功。
  • 使用AJAX绑定token的站点(首次访问后,访问信任站点):

  • Broker 检测到用户未登陆,返回未登陆的 index.php 页面;
  • 客户端通过AJAX请求获取绑定的URL;
  • Broker 检测到客户端没有自己的token,于是设置token并返回绑定链接;
  • 客户端通过加载一张空的图片来请求 SSO Server 绑定;
  • SSO Server 完成绑定,返回空的图片;
  • 客户端通过AJAX向 Broker 请求用户信息;
  • Broker 检查到用户未登陆,于是请求 SSO Server 获取用户信息,看是否在其他信任站点登陆了;
  • SSO Server 检测到用户已在其它站点登陆,返回用户信息;
  • Broker 存储用户信息,并返回给客户端;
  • 客户端接收到用户信息,修改页面结构,显示用户已登陆;
  • 客户端请求 user.php
  • Broker 返回请求成功。
  •