最近再搞统一认证的问题,了解了一下联合认证。查了一些资料,汇总一下。
联合认证是指以分散式的用户管理和用户认证为特征的,使得用户可以以安全可信的方式跨系统、跨网络、跨域访问资源的认证技术,联合认证的主要目的是在异构系统和身份平台之间共享用户身份信息,并实现用户使用效果上的单点登录。
联合认证与集中式单点登录的核心区别在于联合认证中没有统一的认证实体为所有用户提供认证服务,联合认证的这个特点正好迎合了企业和机构需要独立管理和认证用户的应用需求。
联合认证系统支持多个用户身份认证服务器,所有身份认证服务器和与它们相关的应用系统,共同组成的用户可访问的一个区域,称为联盟(federation),联盟中的用户被分散的存储在多个认证中心中。
联合认证的实现原理是在多个域之上抽象出一个安全的传输层,用于用户认证状态和授权状态的跨域传输。当用户在其所属认证中心登陆,其所属认证中心为用户生成认证状态。当该用户对其他域的资源进行访问时,这些资源以某种方式获取用户所属认证中心,即维护该用户认证和授权状态的实体,并在安全传输层之上,与该认证中心建立通信,获取该用户的认证状态和授权状态,然后对用户进行访问控制。
简而言之,联合认证实现了跨域的用户认证状态和授权状态的安全共享,完成用户无缝的跨域安全访问,实现用户使用效果上的单点登录。
除去普通情况下单点登录的一系列优势外,联合认证的实施还可以为企业带来:
1、企业不必花费开销管理和维护其合作伙伴和客户的用户信息,节约企业运营成本;
2、通过向其他企共享信息资源和利用其他企业共享的信息资源,扩大企业业务范围,从而带来的盈利机会;
联合认证领域发展至今已经取得了一定的成果,产生了众多的业界标准规范,同时也出现了一些联合认证的系统实现。
业界标准规范主要以SAML、Liberty ID-FF和WS-Federation为代表;在系统实现方面,开源的Shibboleth项目和惠普商业软件Select Federation都具有典型特点。