这几个设计用户认证、鉴权、单点登录的概念相互交织,很难区分,项目需要做了较为深入的分析和实现,将经验纪录分享,欢迎探讨拍砖。
首先,SSO英文全称Single Sign On,单点登录。单点登录是一个标准规范,用于解决多个系统重复建设用户认证管理功能,而是将用户身份认证集中管理应用场景。是一个规范标准。简单的 SSO 的体系中,会有下面三种角色:
1 , User (多个)
2 , Web 应用(多个)
3 , SSO 认证中心( 1 个)
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。CAS 是我认为最简单实效,而且足够安全的 SSO 选择。
CAS系统解决单点登录问题,对身份认证的具体方法不做要求。
Oauth、openID、SAML是身份身份认证授权的规范和标准,是解决认证授权问题的。
OpenID与Oauth协议的区别,可以从其标准定义的核心应用场景来分析:
1) Oauth协议的使用场景:用户通过第三方照片打印应用打印在某个网站存储的照片,而不希望泄露照片网站的用户名、密码等信息给第三方的照片打印应用。
2) OpenID协议的使用场景,用户在多个网站注册,需要注册并记住多个用户名密码,openid希望帮用户提供一个身份ID,可以在多个网站用来登录。登录网站时,用户选择用其身份ID登录,跳转到身份ID颁发的网站输入用户名、密码进行身份认证,然后跳转会网站实现登录。即我们当前很多时候看到的用”QQ帐号登录”、“微信帐号登录”等。
所以我们可以总结,两个协议的核心区别:
1)Oauth协议的认证凭证必须是资源拥有者发放的;而OpenID的认证凭证可以是你需要登录的网站支持的其它任何正规Openid Provier网站均可。
2)OpenID只是身份的象征,可以看作是身份证;而Oauth认证凭证,一定是资源拥有者发放的,不仅是用户在资源拥有者系统身份的凭证,还是其某些授权资源访问的凭证,可以看作是钥匙。
SAML支持XACML协议进行权限控制。SAML协议较OAUTH来说确实比较复杂,但是功能也十分强大,支持认证,权限控制和用户属性。
进一步,我们开发时候,如果是单系统身份认证,根据使用场景和技术特点,选择OpenID、Oauth、或者SAML。如果不是单系统,不仅涉及身份认证,而是涉及众多系统需要单点登录,则需要选择CAS+认证方案(OpenID/Oauth/SAML)来实现的。
SSO(CAS)与认证服务标准是合作而不是排斥的关系。
=======================
OAUTH、OPENID、SAML、CAS做统一认证与授权时有什么区别,为何业界一股脑都使用oauth?OPENID、SAML、CAS不能进行授 权的操作码?我感觉好像都可以,还是因为OAUTH2.0协议在第三方调用开发上比较简单,比较轻量级,所以大家都采用oauth?
首先SSO和权限控制是两回事。
OpenID是IDP提供一个身份唯一标识把第三方的应用帐号绑定到唯一标识上,只起到了认证的作用。
SAML支持XACML协议进行权限控制。
CAS本身没有授权,也没有权限控制,但是CAS支持SAML,所以就支持了权限控制。
SAML协议较OAUTH来说确实比较复杂,但是功能也十分强大,支持认证,权限控制和用户属性。
-----------------------------------------------------------------------------------------------------------------
近年来,随着企业内部认证系统的应用和趋于完善,企业间通信需求不断增加。此外,随着WEB2.0的兴起,尤其是微博技术的发展,同一用户位于不同微博网站之间的信息交流和传递需求也日益明显。联邦认证应运而生。
WEB方式的基于SAML的SSO已经开始流行,OpenID也很火,今年以来OAuth又火上浇油。上次IETF会议已经开BAR BOF讨论了eduroam(education roaming)的事情。
IETF目前考虑的联邦认证框架结合了EAP, RADISU, GSS-API等,不仅可以为WEB提供联合认证,也希望为SSHv2, NFSv4,IMAP等非WEB应用提供身份的联邦认证能力。
SAML提供了授权和属性能力, GSS-API提供了与应用的集成能力, EAP提供了对现有证书支持封装在GSS-API中的能力,RADIUS传递联邦认证能力。
ipbaobao认为,这一技术具有进一步很大的发展空间,建议关注。
eduroam (education roaming): is the secure, world-wide roaming access
service developed for the international research and education
community. eduroam allows students, researchers and staff from
participating institutions to obtain Internet connectivity across campus
and when visiting other participating institutions by simply opening
their laptop.
----------------------------------------------------------------------------------------------------------