⒈OAuth协议要解决的问题
如果我们的系统通过用户的密码来访问用户存储在第三方系统上的用户数据的话,对于我们来说是非常有利的,因为我们可以利用大数据来进行杀熟。而对于用户来说,是非常可怕的,你可能听说过冠希哥,还可能融过你男朋友的符文(当然,现在已经没有了符文系统)。
对于用户来说有以下隐患
1.我们的系统可以借助用户密码来访问用户存储在第三方系统上的所有用户数据。
2.只有用户修改密码,才能终结这种授权关系。(当你修改密码后,不仅仅我们的系统取消了授权,其它的授权系统也统统取消了)
3.用户的密码泄露的可能性大大的降低了。(没错,我的表密码是明文的,别人拿到就可以去撞库,请叫我雷锋)
而我们使用OAuth协议就可以解决包含上面问题的问题了,OAuth的核心概念,令牌(Token),你有皇上口谕也不能进,除非你有令牌。
令牌中声明了可访问用户数据的区域
令牌中声明了该令牌的有效期
令牌不等价于密码
⒉OAuth协议中的授权模式
1.授权码模式(authorization code):功能最完整,流程最严密,几乎所有的全都是采用授权码模式来完成OAuth流程的
在交互的过程中,将会产生授权码,在其它的模式中是没有授权码的,这个模式有两个主要的特点。
1.用户同意授权的这个动作是在认证服务器上完成的,而密码模式及客户端模式这个同意授权的动作是在第三方应用上完成的,是有伪造授权的风险的。
2.授权码模式是需要第三方应用的后台利用授权码去认证服务器换取令牌,安全性要比简化模式这种直接把令牌发送给浏览器要高。
2.密码模式(resource owner password credentials)
3.简化模式(implicit)
4.客户端模式(client credentials)