您的位置:首页 > 运维架构

[转]cas sso oauth openid saml的联系与区别

2017-08-17 14:50 309 查看

cas sso oauth openid saml的联系与区别

转载地址:http://jingyan.baidu.com/article/60ccbceb47f50764cbb19761.html

  • |
  • 更新:2016-12-09 16:06

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

 

首先,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)与认证服务标准是合作而不是排斥的关系。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: