认证与授权协议对比:OAuth2、OpenID、SMAL

认证授权是目前大多数系统都必须要实现都功能,认证就是验证用户都身份,授权就是验证身份后对受限资源的访问控制。最开始是单个平台要做,后来在互联网时代到来,一个账户可登陆多个平台,然后是各种开放平台账户共享,认证授权变的越来越重要。关于验证授权方面的规范协议也相对成熟通用。

最早出现的认证授权协议是SMAL,一般用在企业级单点登陆场景。平时接触到的不多。

OAutho是看到的用的比较多的认证协议,尤其是在API认证授权时用,最开始是1.0版本,后来因为有回话攻击、会话劫持的漏洞,出了1.0a版本,讲回调链接前置、增加安全验证签名等,但编程实现较麻烦,后来出现OAuth2版本,但不兼容之前的版本。一般见到大多数时用OAutho2或OAutho1.0a。

OpenId一开始出现是为了解决认证的问题,后来出现了OpenId Connect,在OAutho的基础上也可以实现授权的功能。

对比点OAuth2OpenIDSMAL
票据格式 JSON or SAML2 JSON XML
支持授权 Yes No Yes
支持认证 “伪认证” Yes Yes
创建年份 2005 2006 2001
最新版本 OAuth2 OpenID Connect SAML 2.0
传输方式 HTTP HTTP GET and HTTP POST HTTP重定向,SAML SOAP绑定,HTTP POST绑定等
安全弱点 不能抵抗网络钓鱼,OAuth没有使用数据签名和加密等措施,数据安全完全依赖TLS 不能抵抗网络钓鱼,一个钓鱼的IDP如果恶意记录下来用户的OpenID,将会造成很严重的隐私安全问题 XML签名存在漏洞,可能被伪造
使用场景 API 授权 商用应用的单点登录 企业级单点登录,但是对于移动端支持不是很好

对比表格来源:http://www.jianshu.com/p/5d535eee0a9b

原文地址:https://www.cnblogs.com/doit8791/p/7849622.html