【发布时间】:2011-02-28 17:55:28
【问题描述】:
我们有一个调用我们的网络服务的客户端。我们如何确保只有我们的客户端应用程序调用了 Web 服务,而不是其他人创建的客户端调用了我们的 Web 服务。
我们希望避免将密码硬编码到应用程序中。
【问题讨论】:
标签: java web-services security jakarta-ee
我们有一个调用我们的网络服务的客户端。我们如何确保只有我们的客户端应用程序调用了 Web 服务,而不是其他人创建的客户端调用了我们的 Web 服务。
我们希望避免将密码硬编码到应用程序中。
【问题讨论】:
标签: java web-services security jakarta-ee
您的问题的快速答案是查看 OAuth。正确实施 OAuth 是一个过程,所以我会阅读 protocol documentation。这是 OAuth client libraries 示例的链接。我还会搜索 StackOverflow 以获取有关 OAuth 实现的建议。
【讨论】:
在这种情况下,您可以使用two-legged OAuth。这是标准 OAuth 的一种变体,被 SimpleGeo 等公司使用。然后使用 https 保护通信,您就有了强大的解决方案。
【讨论】:
如果您不关心不在浏览器中运行的客户端,那么您可以使用 XSRF 令牌,即每个会话的秘密,它要么与后端中的某个会话密钥相关联,要么通过两个单独的路径往返,例如就像通过一个隐藏的表单输入和一个安全通道上的 cookie。如果您无法保护通道,则必须使令牌一次性使用。 见http://www.cgisecurity.com/csrf-faq.html#protectapp
在一般情况下你不能。一个相当聪明的黑客可能会对您使用的任何协议进行逆向工程,并提取您嵌入源代码中的任何秘密。
【讨论】: