cas sso oauth openid saml的联系与区别

这几个设计用户认证、鉴权、单点登录的概念相互交织,很难区分,项目需要做了较为深入的分析和实现,将经验纪录分享,欢迎探讨拍砖。

首先,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方式的基于SAMLSSO已经开始流行,OpenID也很火,今年以来OAuth又火上浇油。上次IETF会议已经开BAR BOF讨论了eduroam(education roaming)的事情。

 

IETF目前考虑的联邦认证框架结合了EAP RADISU GSS-API等,不仅可以为WEB提供联合认证,也希望为SSHv2 NFSv4IMAP等非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.

----------------------------------------------------------------------------------------------------------
我们同Apigee的SamRamji进行了对话。他本人和其公司(致力于为企业和开发者提供API产品)发现在安全服务上升的趋势中处于核心的是OAuth。
 
过去,Ramji领导微软的 开源战略,同时也是BEA的AquaLogic产品团队的创始成员。他现在担任Apigee的战略专家,并为ApigeeAPI最佳实践博客撰写文章。他 将给予令牌的OAuth协议比作仆从钥匙,在不用多重登陆的前提下,允许用户从一个网站到另一个网站(从Twitter到TweetDeck,从 Facebook到Twitter,从NewYorkTimes到Facebook等)。
 
“OAuth让应用来充当像Twitter(代表了终端用户)这样的服务的中间人,”他说道。这种网站跳跃类型的令牌服务是Web2.0的关键标志,所以在今天称之为“应用经济(AppEconomy)”。
 
OAuth会随着基于REST的Web服务方法的广泛使用而起到很好的作用。此外,Ramji认为OAuth是一种“刚刚好的”安全服务,能适用于广大的开发者。移动设备大爆炸可能会促进OAuth的使用。
 
以 前的替代选择包含了更为复杂的一套流程,开发者需要去学习。当然,OAuth也有其局限性。OAuth的目标直接是通过HTTP进行站点到站点、应用到应 用的跳跃。可以同企业本地的SAML、OpenID以及其他更复杂的安全服务作为至关重要的后端系统的网关来共同使用。
 
OAuth也可以看作是服务重大变化的指示器,Ramji表示。“作为基于令牌的安全系统,它允许用户账号信息为第三方应用以某种途径来使用,而且不会将用户名和密码暴露给那个应用。”
 
会发生什么问题呢?“对于一般水平的开发者来说,连接OAuth的过程十分复杂,”Ramji说道,“而且,它仍旧是一种运作中的标准,让两个应用保持一致并不容易。”
 
这也正是Apigee的机会。该公司构建了一个单一的、简单API同多种终端服务通信,他介绍到。托管的产品起到服务中间件的 作用,能够处理你的请求。开发者可以用Ruby、ObjectiveC、Java和JavaScript来调用 ApigeeOAuthAPI,ApigeeOAuthAPI还支持SalesforceREST、Chatter、LinkedIn和 TwitterAPI,未来还会有更多的支持。
 
Apigee的工作成为API密集型企业的一种象征,可能软件产业会发生经济变革。

你可能感兴趣的:(cas sso oauth openid saml的联系与区别)