您的位置:首页 > 理论基础 > 计算机网络

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中添加用户名和密码:

待续。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: