实现基于REST的身份验证

时间:2014-04-08 19:42:19

标签: java rest restful-authentication

我正在开发一个REST系统,并且即将开始开发一种用户进行身份验证以便使用该服务的方法。在研究散列方法后,我已阅读WikiPedia - Basic Authentication

但是我对实施有一些疑问。如果我理解正确,用户名和密码将被编码到base 64中并发送到服务器。这就是我的困惑所在。

一旦服务器收到这样的请求,我认为我必须决定base64并根据哈希检查它。但是,一旦完成此操作,我不明白必须采取哪些措施来验证用户以后的请求。

我必须检查每次通讯时发送的base64吗?我不想在服务器上保存base64以防止每次都检查密码,因为这会破坏仅使用哈希密码的目的。另外,我的服务只是SSL,所以作为一种身份验证方式,而不是在http标头中传递用户名和密码作为参数在休息请求中是否有任何不利之处?

1 个答案:

答案 0 :(得分:1)

基本身份验证只是通过HTTP从客户端向服务器发送用户名和密码的标准方法。它没有定义是否使用底层SSL,或者这是否是几次调用中的第一次。

我想说的是:你可以决定。

但是,REST应该是无状态的,因此您应该在每次连接到服务器时发送它,而不是创建某种会话。

基本身份验证优于REST-params的优点是,前者是几乎所有Web框架(例如Java EE,Spring Security)的一部分。虽然后者会为您的所有请求添加额外的参数,并且需要您每次都检查它。