我编写了多个客户端应用程序可以使用的Java(Spring-Boot)服务。对于维护/统计,我想记录哪些应用程序访问该服务。在不信任客户端的情况下如何识别客户端应用程序?
其他信息
方法
想法可能是使用公共密钥身份验证并将私有密钥绑定到类似协议/ IP /端口组合的东西。第一部分(公共密钥身份验证)将帮助对良好维护/统计感兴趣的客户。第二部分(绑定)在我眼中是死胡同,因为我不知道可以用什么来绑定:
有什么想法吗?
嗯,我有一个疑问,但在我看来,这是User-Agent request header的目的。
如果从浏览器(Firefox,Chrome等)执行查询,则应该获取详细信息(如果没有代理,则不要删除它。)>
但是,对于其他软件,这可能没有用。例如,当使用标准Java HTTP API时,它将被设置为“ Java / X.x”。它需要在启动时使用命令行参数来自定义它(或调用System.property("http-agent", ...)
,但我不知道有多少人为配置它而烦恼。)>
供参考,我链接了the following article。这是用于从Spring Security上下文中检测客户端新设备的教程,它部分基于User-Agent
。也,in Spring Boot reference documentation,提到了以下应用程序属性:
server.compression.excluded-user-agents= # list of user-agents to exclude from compression
因此,看起来Spring开发人员认为
User-Agent
是确定某些客户端特定性的可行选择。