-
单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 **登录一次 **就可以访问所有相互信任的应用系统。
-
通常公司内部会有非常多的平台供大家使用,比如人力资源,代码管理,日志监控,预算申请等等。如果每一个平台都实现自己的用户体系的话无疑是巨大的浪费,所以公司内部会有一套 公用的用户体系,用户只要登陆之后,就能够 访问所有的系统。这就是 单点登录。
-
SSO 是一类 解决方案 的统称,而在具体的实施方面,我们有两种策略可供选择:
- SAML 2.0
- OAuth 2.0
-
接下来我们区别这 两种授权方式 有什么不同。但是在描述 不同的策略之前,我们先叙述几个 共有的特性,并且相当重要的概念。
-
Authentication VS Authorization
- Authentication: 身份鉴别,以下简称 认证;
- Authorization: 资源访问 授权。
-
认证 的作用在于 认可 你能够访问系统,用于 鉴别访问者 是否是 合法用户;而 授权 用于决定你有访问 哪些资源的权限。
-
SSO 体系中的角色
- 一般 SSO 体系主要角色有三种:
- 1、 User (多个)
- 2、 Web 应用(多个)
- 3、 SSO 认证中心( 1个)
- 一般 SSO 体系主要角色有三种:
-
SSO 实现模式的原则
- SSO 实现模式一般包括以下三个原则:
- 1、 所有的认证登录都在 SSO 认证中心进行;
- 2、 SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是已通过认证的用户;
- 3、 SSO 认证中心和所有的 Web 应用建立一种信任关系,也就是说 web 应用必须信任认证中心。(单点信任)
- SSO 实现模式一般包括以下三个原则:
-
SSO 主要实现方式
- 1、 共享 cookies
- 基于共享同域的 cookie 是 Web 刚开始阶段时使用的一种方式,它利用浏览同域名之间自动传递 cookies 机制,实现两个域名之间系统令牌 传递问题;另外,关于跨域问题,虽然 cookies本身不跨域,但可以利用它实现跨域的 SSO 。如:代理、暴露 SSO令牌值等。
- 缺点:不灵活而且有不少安全隐患,已经被抛弃。
- 2、 Broker-based( 基于经纪人 )
- 这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步请求的电子身份存取。中央数据库的使用减少了管理的代价,并为认证提供 一个公共和独立的 "第三方 " 。例如 Kerberos 、 Sesame 、 IBM KryptoKnight (凭证库思想 ) 等。 Kerberos是由麻省理工大学发明的安全认证服务,已经被 UNIX 和 Windows 作为 默认的安全认证服务集成进操作系统。
- 3、 Agent-based (基于代理人)
- 在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将 认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个 " 翻译 "。例如 SSH 等。
- 4、 Token-based
- 例如 SecureID,WebID ,现在被广泛使用的口令认证,比如 FTP 、邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。
- 5、 基于网关
- 6、 基于 SAML
- SAML(Security Assertion Markup Language ,安全断言标记语言)的出现大大简化了 SSO ,并被 OASIS 批准为 SSO的执行标准。开源组织 OpenSAML 实现了 SAML 规范。
- 1、 共享 cookies