首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在跨域场景下实现单点登录和网站内容融合(1)

在跨域场景下实现单点登录和网站内容融合(1)

前言 在企业业务发生变化时,采用技术手段整合多个网站从来就不是一件轻松的事情。这里面的障碍主要有:
  • 不同的账号和权限管理体系
  • 不同的界面风格
  • 生硬的链接跳转
  • 难以复用的后端接口
从我们的经验看,以上问题要解决,需要使用一种渐进整合的架构,因为整合旧内容和生产新内容是同时进行的,我们做的事情就像是:开着飞机换引擎。
解决思路 本文介绍一种在跨域场景下实现单点登录和网站内容融合的方案,针对性解决前述 4 大障碍,其对应的主要技术点是:
  • 通过单点登录统一账号
  • 通过 iframe 门户页提供统一的外框导航菜单
  • 通过拦截链接跳转和重置地址栏,实现统一的链接跳转行为
  • 通过支持 CORS 请求协议,接口可以部署在任何一个关联应用
以下举例说明此方案。
假设我们需要整合的网站分别是 a.my.com(简称 a )和 b.my.com(简称 b ) 。
实现单点登录 为了实现单点登录,我们需要新增单点登录服务器 sso.my.com 。
改造 a、b 网站底层,让他们的用户账号映射为一个统一的 uniqueId 。并在底层调用单点登录服务器提供的登录认证。
用户首次访问 a 网站感知到的流程如下:
  • 用户访问页面 //a.my.com/page.htm
  • a.my.com 调用 sso.my.com 认证服务进行鉴权
  • 鉴权失败,跳转登录页 //sso.my.com/login.htm?returnUrl=//a.my.com/page.htm
  • 登录后回跳进入页面 //a.my.com/page.htm
同理,用户首次访问 b 网站,也会获得一致的体验。
下面是一个淘宝的单点登录的案例,访问"我的淘宝"页面,进入的是登录页。
原页面地址:https://i.taobao.com/my_taobao.htm
          带回跳的登录页地址:https://login.taobao.com/member/login.jhtml?redirect_url=https%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm(如图        1 所示)
图 1. 带回跳的淘宝登录页地址
返回列表