【系统安全】OAUTH、OPENID、SAML、CAS做统一认证与授权的联系与区别

首先,SSO和权限控制是两回事:

1、CAS系统解决单点登录问题,对身份认证的具体方法不做要求。

2、Oauth、openID、SAML是身份身份认证授权的规范和标准,是解决认证授权问题的。

OpenID与Oauth协议的区别,可以从其标准定义的核心应用场景来分析:

1、Oauth协议的使用场景:用户通过第三方照片打印应用打印在某个网站存储的照片,而不希望泄露照片网站的用户名、密码等信息给第三方的照片打印应用。

2、OpenID协议的使用场景,用户在多个网站注册,需要注册并记住多个用户名密码,openid希望帮用户提供一个身份ID,可以在多个网站用来登录。登录网站时,用户选择用其身份ID登录,跳转到身份ID颁发的网站输入用户名、密码进行身份认证,然后跳转会网站实现登录。即我们当前很多时候看到的用”QQ帐号登录”、“微信帐号登录”等。

所以我们可以总结,两个协议的核心区别:

1、Oauth协议的认证凭证必须是资源拥有者发放的;而OpenID的认证凭证可以是你需要登录的网站支持的其它任何正规Openid Provier网站均可。

2、OpenID只是身份的象征,可以看作是身份证;而Oauth认证凭证,一定是资源拥有者发放的,不仅是用户在资源拥有者系统身份的凭证,还是其某些授权资源访问的凭证,可以看作是钥匙。

3、SAML支持XACML协议进行权限控制。SAML协议较OAUTH来说确实比较复杂,但是功能也十分强大,支持认证,权限控制和用户属性。

进一步,我们开发时候,如果是单系统身份认证,根据使用场景和技术特点,选择OpenID、Oauth、或者SAML。如果不是单系统,不仅涉及身份认证,而是涉及众多系统需要单点登录,则需要选择CAS认证方案(OpenID/Oauth/SAML)来实现的。

OAuth2.0认证和授权机制讲解:

认证和授权过程(包括三方)

  1、服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。

  2、用户,存放在服务提供方的受保护的资源的拥有者。

  3、客户端,要访问服务提供方资源的第三方应用,通常是网站。在认证过程之前,客户端要向服务提供者申请客户端标识。

  

     

  用户访问客户端的网站,想操作用户存放在服务提供方的资源。

  客户端向服务提供方请求一个临时令牌。

  服务提供方验证客户端的身份后,授予一个临时令牌。

  客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。

  用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。

  授权成功后,服务提供方引导用户返回客户端的网页,并返回已授权的临时凭证。

  客户端根据已授权的临时令牌从服务提供方那里获取访问令牌。

  服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。

  客户端使用获取的访问令牌访问该用户存放在服务提供方上的受保护的资源。(客户端只能访问给予它授权的用户的资源信息)

参考:

1、https://zhuanlan.zhihu.com/p/20913727

2、http://m.blog.csdn.net/article/details?id=12190075

原文:http://blog.sina.com.cn/s/blog_165e646820102xdxw.html

猜你喜欢

转载自sun80264629.iteye.com/blog/2393334
今日推荐