Web services XML-RPC的非交互式身份验证/授权?

Web services XML-RPC的非交互式身份验证/授权?,web-services,authentication,authorization,xml-rpc,Web Services,Authentication,Authorization,Xml Rpc,我们并不完全符合XML-RPC规范,但概念几乎相同。客户端通过HTTP/HTTPS和XML负载进入。我们用一个XML负载响应请求。这主要是机器对机器,因此没有人可以键入用户名/密码。我们的构造在ApacheTomcat中运行。我们希望对请求进行身份验证,因为不是每个客户端都可以使用每个服务,所以我们还需要对请求进行授权。我们有订阅和每次使用收费模式,因此有必要记录所有内容 您对服务器和客户端都推荐什么?HTTP BASIC/DIGEST适用于大多数机器对机器任务,它由服务器处理,因此您的API不

我们并不完全符合XML-RPC规范,但概念几乎相同。客户端通过HTTP/HTTPS和XML负载进入。我们用一个XML负载响应请求。这主要是机器对机器,因此没有人可以键入用户名/密码。我们的构造在ApacheTomcat中运行。我们希望对请求进行身份验证,因为不是每个客户端都可以使用每个服务,所以我们还需要对请求进行授权。我们有订阅和每次使用收费模式,因此有必要记录所有内容


您对服务器和客户端都推荐什么?

HTTP BASIC/DIGEST适用于大多数机器对机器任务,它由服务器处理,因此您的API不受影响

它不适合交互使用,因为在不关闭浏览器的情况下很难“注销”用户

否则,您很可能需要修改API以包含身份验证信息,并让您的方法在代码中对其进行身份验证

或者你可以使用经典的“登录”,设置cookie,保持会话技术

但是,坦率地说,对于机器对机器的工作,HTTP BASIC是最简单的

编辑,关于评论

HTTP BASIC只是一个用于显示身份验证所需工件的协议,它适用于机器对机器web服务

它的实现方式取决于您和您的应用程序。使用Java,您可以使用容器身份验证,这将提供身份验证和角色映射。用户->角色映射在数据文件或数据库中处理。受保护的URL以及每个URL的有效角色由web.xml管理

如果您继续向不同的URL添加不同的角色,那么,是的,您将需要重新部署该应用程序

但是,如果您只是添加新用户,则只需更新文件或数据库。如果要添加新的逻辑和新的URL,那么无论如何都必须重新部署。如果您有一个粒度足够细的角色结构,那么在您实际添加新方法之前,您就不必处理web.xml。例如,在极端情况下,您可以为每个方法创建一个角色,并将它们分别分配给用户。大多数人不需要走那么远

如果您不想使用容器身份验证,那么编写一个Servlet过滤器来实现将用户和角色映射到URL的设想。即使您实现了自己的工具,您仍然可以为您的客户机使用HTTP基本协议

如果你在寻找一个通用的Java安全框架,我会听从谷歌的建议——有几个,我都没有用过。我在容器身份验证和编写我们自己的方面运气很好。

@Will


我支持HTTP的基本建议,可以证明它与,我在一个遗留应用程序的基础上实现了它,该应用程序使用了自己的基于DB的身份验证/授权逻辑。

这对授权没有任何作用。我也看不出是否需要不断编辑web.xml文件,并将其作为身份验证的唯一数据存储。难道我们不也必须弹跳tomcat才能使其生效吗?