统一认证授权及单点登录的技术选择
主要认证授权技术
LtpaToken
全称:IBM Lightweight Third-Party Authentication。是一个羽量的token生成规则,作用有点像OAUTH2.0的第四种规则Client Credentials,即直接产生Access Token
一个非常灵活的认证规则,轻量级用户单点登录,适用于简单实现几个类,实现统一算法的URL登陆跳转。
OAUTH2.0
OAUTH2.0协议在第三方调用开发上比较简单,比较轻量级,各个语言的支持非常丰富,认证类型有4种,可以比较灵活的选择,业内比较偏向选择这个方案。
OpenID
OpenID只起到了认证的作用。
OpenID和OAUTH的区别
很多人把OpenID和OAUTH混淆了,国内搜索出来的站点基本上是摩棱两可,讲不清楚。
实际上区别很明显:
- OpenID认证(即证明你是你,用于登陆Login时认证),OAuth是授权(即授予访问权限的功能/数据/URL/等。无需处理原始身份登陆认证)。
- OAuth可以用于外部合作伙伴或企业内部第三方网站允许访问受保护的数据,而不必重新验证用户。
SAML
SAML协议较OAUTH来说比较复杂,,但是功能也十分强大,支持认证,权限控制和用户属性。
CAS
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目。
使用起来较繁琐,在3.5版已包含OAUTH2.0认证算法。
但如果仅仅是集成第三方认证,没必要用CAS。
OAUTH2.0的基本概念
介绍,这篇比较好:
http://www.cnblogs.com/linianhui/p/oauth2-authorization.html
重点需要了解OAUTH2的4种授权流程(许可类型)
- Authorization Code
- Implicit
- Resource Owner Password Credentials
- Client Credentials
看看这些例子就能很快了解这些许可类型的区别:
豆瓣Authorization Code接口
https://developers.douban.com/wiki/?title=oauth2
QQ Implicit互连接口
http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8implicit_grant%E6%96%B9%E5%BC%8F%E8%8E%B7%E5%8F%96access_token
微信Client Credentials接口
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
可见,微信的接口最简单易用,便于集成。
目前维护的开源产品:https://gitee.com/475660