参考资料
BasicAuth基本授权
BasicAuth又叫HttpAuth,它非常简单。例如你访问一个页面时,会弹出用户名密码框
它的优点是:简单,只要维护好用户名密码的安全性即可
访问使用BasicAuth的页面时,可以很简单的填写用户名和密码。许多开源HTTP请求库都提供BasicAuth的接口。
下面以Python中的requests库为例:
requests.get("http://usrname:[email protected]")
requests.get("http://www.baidu.com",auth=("usrname","password"))
OAuth:授权方式的开放标准
主要用途:一些拥有API资源的大户(比如微信、百度语音等),跟普通用户分享资源就通过OAuth。
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。
OAuth有1.0和2.0两个版本,下面讲1.0
OAuth 1.0原理:
OAuth1.0认证流程:
- 第一步:网站向认证平台请求一个未授权的Token,这个Request Token Url是前面说的第一个Url;
- 第二步:跳转至用户授权页面,提示用户进行登录,并进行授权,返回获得已授权的Token,用到的User Authorization Url是前面说的第二个Url;
- 第三步:通过已授权的Token,向认证平台请求Access Token(数据令牌),用到的Request Access Url是前面说的第三个Url,返回后到这步整个认证流程就结束了,最后一步,是通过数据令牌等参数,调用接口获取用户信息,不完全算认证的流程。
可能是最具破坏性的OAuth安全故障是网络钓鱼漏洞:使用OAuth每个网站在视觉上(但不是技术上的)要求最终用户提供他们自己的主人身份,以防止普通用户理解,他们不应该键入的用户名和密码那些在他们遇到的攻击者的网站,在视觉上模拟这个过程窃取凭据。双因素身份验证不能防止这种攻击,因为网络钓鱼站点也可以窃取(并立即使用)。