RESTful Web Service - http身份登录认证的实现和使用(一)
2015-09-08 17:24
686 查看
RESTful Web Service - http身份登录认证的实现和使用(一)
一、概述:
因为RESTful的无状态特性,导致无法知道当前的请求方是否可靠,所以不得不对每次请求进行验证。但是如何更语义化的将需要验证的信息附加到HTTP里呢?现在比较常见的方式是把验证信息作为参数发送过去,但是这样会违反RESTful的原则。例如,GET /user/1/xx验证信息xx。所以REST 服务的安全,一般依赖于HTTP认证,幸好的是HTTP协议本身定义了2种认证方式,Basic、Digest,另个我看其他论坛里提到了Token也可以,这些都有标准的实现的开源包。REST属于webService一种,他的安全是后台服务的安全。二、restFull webservice 为什么要用Base和Digest方式,这两种方式又是什么意思?
面对用户认证的问题。最常见的实现方式一般是这样的:用户提交一个含有用户名和密码的表单,服务端脚本验证其合法性,如果通过验证,则在Session里标识一下,如此一来,在同一个Session周期里,用户就维持了自己的认证状态。基于Session的认证最大的问题在于它不符合REST风格,更直接一点说,它破坏了HTTP的无状态特性,从而对可扩展性造成障碍。RFC2617里规定的两种标准的认证方式(Baisc,Digest),和Session方式最根本的不同是,它们是符合HTTP无状态特性的,所以相对而言更值得推荐。
什么是HTTP Basic Authentication?直接看http://en.wikipedia.org/wiki/Basic_authentication_scheme吧。在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码(google浏览器不会)。
要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:一是在请求头中添加Authorization: Authorization: "Basic 用户名和密码的base64加密字符串"。二是在url中添加用户名和密码:
待续。。。。。
相关文章推荐
- tcpdump
- vmotion的网络要求
- HTTP详解1-工作原理
- HTTP详解2-请求、响应、缓存
- 关于 httpUrlConnection 的 setDoOutput 与 setDoInput
- TCP连接与关闭
- 下载网络图片到图库
- Java 利用 HttpURLConnection 读取页面 返回字节流(生成静态页面)
- 使用 SO_KEEPALIVE 选项检测TCP连接
- 使用tshark监视和检查网络流量
- 一个解除TCP连接的TIME_WAIT状态限制的简便方法
- 网络编程中的几个常用函数
- 用fiddler2模拟2G,3G环境下的网络环境
- c语言 实现ping 功能/效果 检测当前网络是否连通
- TCP、UDP详解
- [swift] 手动集成Alamofire网络库的方法
- TCPDump抓取vlan/pppoe等数据帧的规则
- 网络通信之网络图片获取 并显示屏幕上
- 读书笔记之TCP/IP1(1)
- android-async-http框架库使用基础