标题：单点登陆
单点登录-SSO简介
当用户第一次访问应用系统1的时候，因为还没有登录，会被引导到认证系统中进行登录；根据用户提供的登录信息，认证系统进行身份效验，如果通过效验，应该返回给用户一个认证的凭据－－ticket；用户再访问别的应用的时候就会将这个ticket带上，作为自己认证的凭据，应用系统接受到请求之后会把ticket送到认证系统进行效验，检查ticket的合法性。如果通过效验，用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
支持SSO的产品
目前业界已有很多产品支持SSO，如IBM的WebSphere和BEA的WebLogic，但各家SSO产品的实现方式也不尽相同。WebSphere通过Cookie记录认证信息，WebLogic则是通过Session共享认证信息。Cookie是一种客户端机制，它存储的内容主要包括: 名字、值、过期时间、路径和域，路径与域合在一起就构成了Cookie的作用范围，因此用Cookie方式可实现SSO，但域名必须相同; Session是一种服务器端机制，当客户端访问服务器时，服务器为客户端创建一个惟一的SessionID，以使在整个交互过程中始终保持状态，而交互的信息则可由应用自行指定，因此用Session方式实现SSO，不能在多个浏览器之间实现单点登录，但却可以跨域。
实现SSO的方案-SAML的功能
实现SSO有无标准可寻？如何使业界产品之间、产品内部之间信息交互更标准、更安全呢？基于此目的，OASIS（结构化信息标准促进组织）提出了SAML解决方案（有关SAML的知识参看链接）。 
用户认证中心实际上就是将以上所有功能、所有概念形成一个整体，为企业提供一套完整的用户认证和单点登录解决方案。一个完整的用户认证中心应具备以下功能: 
1. 统一用户管理。实现用户信息的集中管理，并提供标准接口。 
2. 统一认证。用户认证是集中统一的，支持PKI、用户名/密码、B/S和C/S等多种身份认证方式。
3. 单点登录。支持不同域内多个应用系统间的单点登录。 
用户认证中心提供了统一认证的功能，那么用户认证中心如何提供统一授权的功能呢？这就是授权管理中，其中应用最多的就是PMI。 
PMI（Privilege Management Infrastructure，授权管理基础设施）的目标是向用户和应用程序提供授权管理服务，提供用户身份到应用授权的映射功能，提供与实际应用处理模式相对应的、与具体应用系统开发和管理无关的授权和访问控制机制，简化具体应用系统的开发与维护。PMI是属性证书（Attribute Certificate）、属性权威（Attribute Authority）、属性证书库等部件的集合体，用来实现权限和证书的产生、管理、存储、分发和撤销等功能。 
PMI以资源管理为核心，对资源的访问控制权统一交由授权机构统一处理，即由资源的所有者来进行访问控制。同公钥基础设施PKI相比，两者主要区别在于: PKI证明用户是谁，而PMI证明这个用户有什么权限，能干什么，而且PMI可以利用PKI为其提供身份认证。
使用SSO的好处
(1)方便用户
用户使用应用系统时，能够一次登录，多次使用。用户不再需要每次输入用户名称和用户密码，也不需要牢记多套用户名称和用户密码。单点登录平台能够改善用户使用应用系统的体验。
(2)方便管理员
系统管理员只需要维护一套统一的用户账号，方便、简单。相比之下，系统管理员以前需要管理很多套的用户账号。每一个应用系统就有一套用户账号，不仅给管理上带来不方便，而且，也容易出现管理漏洞。
(3)简化应用系统开发
开发新的应用系统时，可以直接使用单点登录平台的用户认证服务，简化开发流程。单点登录平台通过提供统一的认证平台，实现单点登录。因此，应用系统并不需要开发用户认证程序。
单点登陆在 WordPress 中的应用
OpenID
说到单点登录，不得不提 OpenID，OpenID 是最早提出的单点登录的协议，OpenID 是一个以用户为中心的数字身份识别框架，通过 URL 来标识身份，就是你有了一个 OpenID，到所有支持 OpenID 的网站就不需要重复注册了，这样就避免老是注册的问题。
使用 OpenID，你需要你到 OpenID 提供商去注册一个 URL 来标识身份，虽然我们可以通过 OpenID 的委托机制来实现把自己的博客地址作为 OpenID，但是毕竟需要注册，而且很多人对 OpenID 的概念了解不够，使用 URL 作为身份标识相对于邮箱或者账号名来说也是不那么方便，所以 OpenID 这个概念虽然很好，但是实际用途却不广。
让 WordPress 实现 OpenID 支持可以通过一个名字也叫做 OpenID 的插件实现，OpenID 和其 WordPress 插件 这篇文章有对 OpenID 和其 WordPress 插件有详细的介绍。
但是随着很多大服务厂商对 OpenID 的支持，如 Google 账号支持 OpenID，并且 Yahoo，AOL，Facebook，微软 Live 等等大型公司对 OpenID 的支持，使得 OpenID 开始流行，但是现在 OpenID 已经不仅仅是一个 URL，而是已经包括了邮箱地址。所以有服务把这些提供 OpenID 的厂家整合起来提供服务，如click pass就是其中的一家，它能够让你使用 Hotmail, Yahoo, Google, Facebook, AIM 账号实现单点登录。
Google 的 Friend Connect
不过目前整合单点登录做的最好的还是 Google 的 Friend Connect，Google Friend Connect除了实现单点登陆（支持 OpenID, Gmail, Yahoo, AIM 账号）之外，还因支持 OpenSocial 而有更多社交属性，并且 Friend Connect 因开放 API，所以可以很容易把 Google Friend Conect 集成到别的系统中，作为登陆系统，如 Google Friend Connect 的 WordPress 插件。
Facebook Connect
最早提出 Connect 想法的是 Facebook， Facebook 通过 Facebook Connect 把开放从 Facebook 站内开放到站外，允许用户从外部网站访问 Facebook 数据，如用户在 Facebook 的身份、好友列表及隐私设定等，这使得普通网站也可以具有社交功能，这样同样使得 Facebook 应用更加广泛，而 Facebook Connect 的 WordPress 插件使得可以使用 Facebook 账号登陆你的博客，并且可以邀请朋友加入博客，并且同时同步留言到 Facebook，相比 Google Friend Connect 更有交互性，因为 Google Friend Connect 目前还没有一个中心，但是目前 Facebook 在国内的用户不是很多，访问也是相对较慢，所以我没有在博客上使用。
豆瓣连接
豆瓣开放 API 支持 OAuth 协议，豆瓣连接 是我使用 OAuth 协议让用户能够使用豆瓣的账号登陆 WordPress 博客，并且留言时使用豆瓣的头像，豆瓣是国内比较有特色的 Web 2.0 网站，使用豆瓣登陆可以在用户登录方面还是不错的，但是提高和豆瓣网站交互还是这个插件以后要解决的问题。
新浪连接
新浪微博也开放了 API，并且支持 OAuth 协议，所以新浪连接这个 WordPress 插件也是使用 OAuth 协议让用能够使用新浪微博账号登陆 WordPress 博客，并且留言时候使用新浪微博的头像，现在新浪微博在国内非常火爆，通过把用户留言更新到新浪微博，让用户把新浪微博成为 life stream 并且增强博客的应用，这些都是非常不错的体验。
我爱水煮鱼使用的单点登录插件
现在我爱水煮鱼博客只允许注册用户才可以留言，但是 WordPress 默认注册很繁琐，所以我加上了新浪连接和豆瓣连接这两个插件来来简化用户注册和登录，由于登陆的用户才能留言，博客垃圾留言大大减少，几乎没有。