認證授權是目前大多數系統都必須要實現都功能,認證就是驗證用戶都身份,授權就是驗證身份后對受限資源的訪問控制。最開始是單個平台要做,后來在互聯網時代到來,一個賬戶可登陸多個平台,然后是各種開放平台賬戶共享,認證授權變的越來越重要。關於驗證授權方面的規范協議也相對成熟通用。
最早出現的認證授權協議是SMAL,一般用在企業級單點登陸場景。平時接觸到的不多。
OAutho是看到的用的比較多的認證協議,尤其是在API認證授權時用,最開始是1.0版本,后來因為有回話攻擊、會話劫持的漏洞,出了1.0a版本,講回調鏈接前置、增加安全驗證簽名等,但編程實現較麻煩,后來出現OAuth2版本,但不兼容之前的版本。一般見到大多數時用OAutho2或OAutho1.0a。
OpenId一開始出現是為了解決認證的問題,后來出現了OpenId Connect,在OAutho的基礎上也可以實現授權的功能。
對比點 | OAuth2 | OpenID | SMAL |
---|---|---|---|
票據格式 | 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