我们并不完全符合XML-RPC规范,但概念几乎完全相同。客户端通过带有XML有效负载的HTTP / HTTPS进入。我们使用回复请求的XML有效负载进行响应。这主要是机器到机器,所以没有人输入用户名/密码。我们的构造在apache tomcat中运行。我们想要对请求进行身份验证,因为并非每个客户都可以使用所有服务,我们也需要对请求进行授权。我们有订阅和每次使用的充电模型,因此有必要记录所有内容。
您对服务器和客户端的建议是什么?
答案 0 :(得分:1)
HTTP BASIC / DIGEST适用于大多数机器到机器的任务,它由服务器处理,因此您的API不受影响。
它对于交互式使用不起作用,因为在不关闭浏览器的情况下很难“注销”用户。
否则,您很可能需要更改API以包含身份验证信息,并让您的方法在代码中对其进行身份验证。
或者您可以使用经典的“登录”,设置cookie,保持会话技巧。
但是,坦率地说,对于机器到机器的工作,HTTP BASIC是最简单的。
编辑,关于评论。
HTTP BASIC只是一种用于呈现身份验证所需工件的协议,适用于机器到机器的Web服务。
如何实施取决于您和您的申请。使用Java,您可以使用容器身份验证,这将提供身份验证和角色映射。用户 - >角色映射在数据文件或数据库中处理。受保护的URL以及对每个URL有效的角色由web.xml管理。
如果您继续向不同的URL添加不同的角色,那么,是的,您需要重新部署该应用程序。
但是,如果您只是添加新用户,则只需更新文件或数据库即可。如果您要添加新逻辑和新URL,则无论如何都必须重新部署。如果你有一个具有足够精细粒度的ROLE结构,那么在实际添加新方法之前,你不必弄乱web.xml。例如,您可以在极端情况下为每个方法创建一个角色,并将它们分别分配给用户。大多数人不需要那么远。
如果您不想使用容器身份验证,请编写Servlet过滤器以实现将用户和角色映射到URL的愿景。即使您实现了自己的工具,您仍然可以为您的客户使用HTTP BASIC协议。
如果您正在寻找一个通用的Java安全框架,我会推迟谷歌 - 有几个,我没有使用它们中的任何一个。我在容器认证和写自己的认证方面都很幸运。
答案 1 :(得分:0)
@Will
我是第二个HTTP Basic建议,并且可以证明它与Spring Security相当好地集成,我在遗留的基于数据库的身份验证/授权逻辑的遗留应用程序之上实现了它。