HTTP Basic Auth算法 |
数字签名/数字证书浏览器 |
OAuth协议方式(Token)七牛云存储 |
SSO(Token)安全 |
|
实现方式服务器 |
客户端在发送以前是以用户名追加一个冒号而后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,而后再将其用Base64编码,获得QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码获得一个由冒号分隔的用户名和口令的字符串。网络 |
为每一个接入方分配一个密钥,而且规定一种签名的计算方法。要求接入方的请求中必须加上签名参数。同时为防范Replay***,须要在请求中添加时间戳。架构 |
OAUTH认证受权有三个步骤,归纳为:框架 1. 获取未受权的Request Token;分布式 2. 获取用户受权的Request Token; 3. 用受权的Request Token换取Access Token。 当应用拿到Access Token后,就能够有权访问用户受权的资源了。 |
当用户第一次访问应用系统1的时候,由于尚未登陆,会被引导到认证系统中进行登陆;根据用户提供的登陆信息,认证系统进行身份校验,若是经过校验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket带上,做为本身认证的凭据,应用系统接受到请求以后会把ticket送到认证系统进行校验,检查ticket的合法性。若是经过校验,用户就能够在不用再次登陆的状况下访问应用系统2和应用系统3了。 |
适用范围 |
适用于HTTP协议的请求。 |
适用于REST/SOAP接口。 例如:AWS REST/SOAP API。 |
OAuth协议适用于为外部应用受权访问本站资源的状况。其中的加密机制与HTTP Digest身份认证相比,安全性更高。须要注意,OAuth身份认证与HTTP Digest身份认证之间并非相互取代的关系,它们的适用场景是不一样的。OAuth协议更适合于为面向最终用户维度的API提供受权,例如获取隶属于用户的微博信息等等。若是API并非面向最终用户维度的,例如像七牛云存储这样的存储服务,这并不是是OAuth协议的典型适用场景。 |
适用于不一样网页或应用之间,不须要用户重复输入用户名密码的场景。 |
优势 |
简单,容易理解和实现。 基本上全部流行的网页浏览器都支持基本认证。 |
简单,容易理解和实现。 |
在使用中,OAuth不会使第三方网站或应用接触到用户的账号信息(如用户名与密码),受权后的http通讯中也再也不传输用户信息而是以数字签名和访问令牌(AccessToken)取代,即便截到数据包,也没法还原出用户的登陆信息。这是OAuth最大的优势,也是它得以逐渐成为如今通用的受权标准的缘由。 |
改善系统易用性。对于终端用户使用很是方便。只需记录一组用户名和密码,并且只需输入一次。 提升系统开发效率。对于开发人员来讲,在一个好的SSO构架中身份验证框架只有一个,各应用系统开发人员能够专一于业务逻辑,无须本身再设计身份验证程序。 简化管理员管理。对于系统管理员,有了SSO,用户的帐户和管理系统都只有一套,管理方便,减小负担。 |
缺点 |
虽然基本认证很是容易实现,但该方案创建在如下的假设的基础上,即:客户端和服务器主机之间的链接是安全可信的。特别是,若是没有使用SSL/TLS这样的传输层安全的协议,那么以明文传输的密钥和口令很容易被拦截。该方案也一样没有对服务器返回的信息提供保护。 |
须要承担安全保存密钥和按期更新密钥的负担,还要注意防范replay***。并且不够灵活,更新密钥和升级签名算法很困难。若是请求中添加时间戳,须要保证客户端和服务端时间同步。 |
OAuth做为一个受权协议,而不是一个认证协议,OAuth提供的是权限分配而非认证,受权自己的实质至关于系统为第三方网站/应用开了一个后门,而你的受权就是容许它们能够走后门进来获取你的隐私资料和使用权限。 |
遭受******后的危害较大。由于身份验证系统集中,若是***攻破这一系统,意味着能够危害整个应用系统体系;窃取某一用户在某个系统中的用户名和密码,就能够窃取该用户在该SSO体系中全部系统中的资源。 忘记锁定我的桌面的信息泄露。若是用户忘记锁定电脑,被他人看到,则该用户在整个系统中的信息都将被泄露。对比屡次登陆的系统,一样的状况下,可能只有某个子系统的特定类型数据会被泄露。 |
表2 ForgeRock开源IDM、AM产品分析
OpenIDM |
OpenAm |
OpenDJ |
|
功能 |
用户管理功能,包括:用户身份周期管理、用户和组管理、密码管理、角色管理、权限管理、策略管理、认证和受权、同步功能等核心功能。 并提供REST接口进行管理。 OpenIDM的用户数据能够同步到OpenDJ。 |
OpenAM 是一个领先的开源认证、受权的产品,可用于替换即将被取消的OpenSSO。 OpenAM 提供核心的标识服务用来简化实如今一个网络架构中的透明单点登陆,包括集中式或者分布式的单点登陆。主要的特性有: ·彻底符合开源AAA产品; ·AAA协议:计算机安全领域的协议,AAA指:鉴权,受权,计费(Authentication, Authorization, Accounting); ·简单易用、易配置; ·纯Java开发; ·可轻松配置联合认证系统,并集成到已有项目中。 并提供REST接口进行管理。 |
提供LDAP服务,并提供REST接口进行方便的管理。 |
角色 |
IDM(用户身份管理) |
SSO(单点登陆) |
LDAP(轻型目录访问协议) |
适用范围 |
用户管理。 |
主要适用于单点登陆(SSO)的应用场景。 |
LDAP应用。 |
认证机制 |
客户端进行认证的时候,向OpenIDM提供用户名密码(明文传输),OpenIDM进行认证并返回认证结果。 |
OpenAM提供的认证机制主要是用户登陆功能,用户在接口中提供用户名密码,OpenAM验证成功以后会返回一个TokenId,用于后续的SSO步骤。 |
提供标准的LDAP认证机制。 |