单点登录(SSO)概要设计

第一章 : 单点登录(SSO)

SSO诞生的目标

  1. 提高用户体验,提高用户的效率;
  2. 资源整合;
  3. 简化管理,降低了安全的风险和管理的消耗;
  4. 提高服务之间的合作效率

SSO概述

  1. 什么是SSO
    单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统。

  2. 下图为SSO单点登录物理拓扑图
    SSO单点登录物理拓扑图

SSO的技术的几种技术方案

  1. 基于cookies实现
    不支持跨域,不推荐
  2. 基于session共享来实现
    捆绑容器,php与java互通相对麻烦,不推荐
  3. 基于身份验证票据ticket来实现
    支持跨域,支持语言客户端,推荐

SSO的技术机制

  1. 基本原理:
    当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
  2. 如图基本原理流程:
    基本原理

第二章 : SSO的实现 –– CAS###

CAS简介

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

CAS 具有以下特点:

  1. 开源的企业级单点登录解决方案。
  2. Java开源的、多协议的 SSO 解决方案; Protocols : Custom Protocol 、 CAS 、 OAuth2 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等。
  3. 支持多种认证机制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等。
  4. 提供高可用性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有很多支持分布式环境的实现,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS
  5. CAS Server 为需要独立部署的 Web 应用。
  6. CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
  7. 支持跨域单点登录,支持二级域名的单点登录。

CAS架构体系

CAS架构体系
注意:详细请移步到http://jasig.github.io/cas/4.1.x/planning/Architecture.html

CAS原理和协议

CAS原理和协议

CAS 页面流程与场景

  1. 以“广告系统”为入口
  2. 以“运营系统”为入口
  3. 以“SSO系统”为入口
  4. 以“账户中心”为入口

注意:以上操作一个系统登录,则其他所有系统均可以访问,如果一个系统进行退出,则其他所有系统均已退出

第三章 :账户中心

账户信息管理

  1. 修改个人资料
    此功能为修改当前登录者的个人资料,比如邮箱,性别等等。

  2. 修改登录密码
    此功能为修改登录者的密码。

  3. 账户管理
    此功能为有一定权限的账号才可以使用,就是管理全局的账户,针对账户进行新增,修改信息,修改密码,删除,锁定,解锁等等。还支持用户授权管理,针对账户授系统权限和角色权限等等。

账户权限管理

  1. 角色管理
    此功能为针对角色进行管理,具体给角色进行赋权。

  2. 权限资源管理
    此功能为针对权限资源、菜单等进行管理。

第四章:技术选型

单点登录SSO的实现 – CAS

详情请移步:
Cas官网:http://jasig.github.io/cas/4.1.x/index.html
Cas代码库:https://github.com/Jasig/cas
jasig CAS实现单点登录(数据库认证):http://my.oschina.net/indestiny/blog/200768

或者参考第二章

权限安全管理– shiro

详情请移步:
Shiro官网:http://shiro.apache.org/
让Apache Shiro保护你的应用:http://www.infoq.com/cn/articles/apache-shiro
将 Shiro作为权限基础:http://www.ibm.com/developerworks/cn/opensource/os-cn-shiro/

第三方应用登录 – OAuth 2.0 协议

详情请移步:
OAuth 2.0官网:http://oauth.net/2/
理解OAuth 2.0:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html