本日这节课,紧张跟大家讲下常见的接口认证。
HTTP协议是无状态的,就像两个盲人一样,彼此不能识别对方。
同一个客户真个这次要乞降上次要求是没有对应关系,对http做事器来说,它并不知道这两个要求来自同一个客户端做事器须要通过某种办法理解访问用户的身份。一旦做事器知道了用户身份,就可以判断用户可以访问的事务和资源了。认证意味着要证明客户端访问用户是谁。常日情形是通过供应用户名和密码来认证的

一、什么是HTTP基本认证?
客户端通过HTTP协议跟Web做事器交互, 客户端一样平常不会利用cookie, 而是把 \"大众用户名+冒号+密码\"大众用BASE64编码的字符串放在http request 中的header Authorization中发送给做事端, 这种办法叫HTTP基本认证(Basic Authentication)
当浏览器访问利用基本认证的网站(如我们要下载论坛里面的某个附件http://120.25.145.237/upload/forum.php?mod=viewthread&tid=15)的时候, 浏览器会提示你上岸(输入用户名和密码),如下图
当浏览器访问利用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图
如果用户名密码缺点的话, 做事器会返回401 如下图
二,认证事理:
三、HTTP基本认证的过程
第一步: 客户端发送http request 给做事器,
第二步: 由于request中没有包含Authorization header, 做事器会返回一个401 Unauthozied 给客户端,并且在Response 的 header \"大众WWW-Authenticate\公众 中添加信息。
第三步:客户端把用户名和密码用BASE64编码后,放在Authorization header中发送给做事器, 认证成功。
第四步:做事器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据要求,发送资源给客户端
利用Fiddler Inspectors 下的Auth 选项卡,可以很方便的看到用户名和密码:
四、HTTP基本认证和HTTPS
把 \"大众用户名+冒号+密码\"大众 用BASE64编码后的string虽然用肉眼看不出来, 但用程序很随意马虎解密,上图可以看到Fiddler就直接给解密了。 以是这样的http request 在网络上,如果用HTTP传输是很不屈安的。 一样平常都是会用HTTPS传输, HTTPS是加密的, 以是比较安全.
五、HTTP OAuth认证
OAuth 对付Http来说,便是放在Authorization header中的不是用户名密码, 而是一个token.
微软的Skydrive 便是利用这样的办法, 如下图
六、其他认证
除了基本认证(Basic Authentication), 还有择要认证 digest authentication, WSSE(WS-Security)认证
七、基本认证的安全毛病
基本认证通过网络发送用户名和密码,虽然进行base-64编码可以隐蔽用户名和密码,但是很随意马虎通过反向编码过程进行解码。
纵然密码以更加难以解码的办法加密,第三方用户仍旧可以捕获被修正过的用户名和密码,并通过重放攻击获取做事器的访问权限。
很多用户会将不同的做事利用相同的用户名和密码,基本认证直接发送用户名和密码,会对一些主要的做事(比如在线银行网站)造成威胁。
基本认证没有供应任何针对代理和中间人节点的防护方法,他们没有修正认证首部,但却修正了报文的别的部分,这样就严重的改变了事务的实质。
假冒做事器很随意马虎骗过基本认证。如果在用户实际链接到一台恶意做事器或者网关的时候,能够让用户相信他链接的是一个受基本认证保护的合法主机,攻击者就可以要求用户输入密码。
IIS中站点默认开启匿名身份验证,并可以直接访问。