我已经创建了一个RESTful服务器应用程序,它位于有用的URL上并为请求提供服务,比如www.site.com/get/someinfo。它是在春天建造的。
但是,这些访问是受密码保护的。我现在正在构建一个客户端应用程序,它将连接到这个RESTful应用程序,并通过一个网址请求数据。如何传递凭据?目前,它只是向用户弹出用户名/密码框,但我希望用户能够在客户端应用程序的框中键入用户名和密码,并在客户端应用程序请求数据时让客户端应用程序将凭据提供给RESTful应用程序。客户端是使用Struts构建的。
干杯
编辑-我认为我的问题还不够清楚。我已经强制HTTPS,我的问题更多,在代码中,当我从www.site.com/get/someinfo请求数据时,我如何在发出请求的同时传递我的凭据?
发布于 2009-06-05 03:41:15
你或多或少有3个选择:
的HMAC质询/响应
OAuth目前容易受到网络钓鱼攻击的变体的影响,这种攻击在很大程度上是目标无法检测到的。因此,在修改协议之前,我不建议这样做。
OAuth也应该是一个关于设计安全协议有多么困难的教训,所以我在犹豫是否推荐你自己的路线。
剩下的就是HTTP身份验证,如果您能使用它,它可能是最好的。
尽管如此,互联网上几乎所有的东西都使用基于表单的身份验证,而且许多人甚至不会为了传输级别的安全而使用https,所以也许简单地以明文发送密码文本对您的目的来说已经“足够好”了。尽管如此,我仍然鼓励使用https,因为这至少减少了对中间人攻击的危险。
发布于 2009-06-05 02:39:41
如果您可以添加HTTP头到您的请求,您可以只添加Authorization
头:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
其中您使用的是基本身份验证,并且QWxhZGRpbjpvcGVuIHNlc2FtZQ==
位是"username:password
“base64编码(不带引号)。RFC 2617
发布于 2009-06-04 13:28:48
https与身份验证无关,它只是传输层加密。
如果您与HTTP api交互,无论它是否为https,并且弹出对话框,这意味着它使用HTTP身份验证,无论是基本身份验证还是摘要身份验证。如果您的客户端实例化一个http客户端以从这些“服务”读取数据,那么您可以在实例化对象时传递这些凭据。
如果使用客户端脚本,XmlHttpRequest也支持http身份验证。
因此,就代码而言,如何将凭据传递给RESTful服务取决于您正在使用的http客户端(您实例化以检索数据的对象)。您只需自己从客户端收集这样的用户名/密码,并使用它来调用其他服务。
https://stackoverflow.com/questions/944679
复制相似问题