将凭据安全地提供给RESTFUL API

我创建了一个RESTful服务器应用程序,可以在有用的URL(例如www.site.com/get/someinfo)上访问并提供请求服务。 它建在春天。

但是,这些访问受密码保护。 我现在正在构建一个客户端应用程序,该应用程序将连接到此RESTful应用程序并通过URL请求数据。 我如何传递凭据? 目前,它只是弹出用户/密码框给用户,但我希望用户能够在客户端应用程序的框中键入用户名和密码,并让客户端应用程序将凭据提供给RESTful应用程序它请求数据。 客户端使用Struts构建。

干杯

编辑 - 我认为我没有把这个问题弄清楚。 我已经强制HTTPS,我的问题更多,在代码中,当我从www.site.com/get/someinfo请求数据时,我如何通过我的凭证并提出请求?


你或多或少有3个选择:

  • HTTP验证
  • 推出自己的协议,理想的是基于HMAC挑战/响应
  • OAuth的
  • 目前,OAuth容易受到网络钓鱼攻击的影响,这种攻击大部分无法被目标检测到。 因此,我不会推荐它,直到协议被修改。

    OAuth也应该是一个关于设计安全协议有多困难的教训,所以我不愿意推荐自己的路线。

    这留下了HTTP认证,如果你能使用它,这可能是最好的。

    尽管如此,互联网上几乎所有的东西都使用基于表单的身份验证,而且很多人甚至不用使用https来确保传输级别的安全性,所以也许只需简单地发送密码文本就足够“满足您的需求”。 即使我仍然鼓励使用https,因为这至少可以减少中间人攻击的危险。


    如果您可以将HTTP标头添加到您的请求中,您可以添加Authorization标头:

    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    

    您使用的是基本身份验证,并且QWxhZGRpbjpvcGVuIHNlc2FtZQ==位是“ username:password ”base64编码(不带引号)。 RFC 2617


    那么,https与认证无关,它只是传输级加密。

    如果您与HTTP API进行交互,无论是否为https,并弹出对话框,这意味着它使用HTTP身份验证,无论是基本或摘要。 如果您的客户端实例化一个http客户端从这些“服务”中读取数据,那么当您实例化对象时,您可以传递这些凭据。

    如果你使用客户端脚本,XmlHttpRequest也支持http认证。

    因此,就代码而言,您如何将凭据传递给RESTful服务取决于您使用的http客户端(您实例化的对象以检索数据)。 您可以简单地从客户端收集这样的用户名/密码,然后使用它来调用其他服务。

    链接地址: http://www.djcxy.com/p/21969.html

    上一篇: Supplying credentials safely to a RESTFUL API

    下一篇: RESTful authentication for web applications