Algorithm 防止从不同的客户端应用程序调用webservice

Algorithm 防止从不同的客户端应用程序调用webservice,algorithm,code-access-security,Algorithm,Code Access Security,我有这个网络服务在工作。对于该Web服务,我们部门开发了一个客户机来使用该Web服务 我们要防止的是,他们开发任何其他客户机来使用它 在我们的客户机和Web服务通信中是否有任何算法和实践可以改进,以验证消费客户机是我们的应用程序 我有一个想法,我们可以开发一个加密算法,时间(5秒的宽限)必须与服务器上计算的时间相匹配 但我想确定的是,这方面没有最佳实践。。。或者如果这仍然是个好主意 (对不起我的英语)您正在寻找的是所谓的“身份验证”。您需要应用程序身份验证。对于基于Web的应用程序和服务,请尝试

我有这个网络服务在工作。对于该Web服务,我们部门开发了一个客户机来使用该Web服务

我们要防止的是,他们开发任何其他客户机来使用它

在我们的客户机和Web服务通信中是否有任何算法和实践可以改进,以验证消费客户机是我们的应用程序

我有一个想法,我们可以开发一个加密算法,时间(5秒的宽限)必须与服务器上计算的时间相匹配

但我想确定的是,这方面没有最佳实践。。。或者如果这仍然是个好主意


(对不起我的英语)

您正在寻找的是所谓的“身份验证”。

您需要应用程序身份验证。对于基于Web的应用程序和服务,请尝试查看两条腿的OAuth。在OAuth中,您为访问您的服务的每个客户端应用程序提供了一个id和一个秘密,并且为额外的安全性对每条消息进行了签名。

我认为web服务(例如,基于SOAP或REST)的一部分要点是发布一个接口,该接口将允许您的服务被各种客户端实现潜在地使用(互操作性是web服务的动机之一)

如果您想锁定您的服务以供您的客户端使用,将其作为“Web服务”的唯一好处可能是您已经实现了它的工具和库。您可能想考虑这是否值得(确实是可能的)。


如果您分发您的客户端应用程序,则可能需要在此客户端中嵌入任何保护机制,以确保来自该客户端的请求。因此,您嵌入的任何秘密机制可能只会在某一点上混淆,但更高级的用户可能会破坏它。

我可以让他们使用r和密码,但他们将能够开发自己的客户端应用程序…我最好要求一些“授权”算法…一种形式的身份验证使用客户端证书。只向单个应用程序分发证书,并且只允许该证书。哦,听起来不错…有没有想法在过期时从服务器更新这些证书?如果使用客户端证书,问题是私钥必须可用并嵌入到客户端应用程序,因此可以获得(可能需要一些努力)。您是否会分发您的客户端?我将分发给特定的客户(可能20个客户)…我不希望他们开发自己的客户端来使用Web服务…为什么不呢?建立API和收费模型以鼓励创新难道不是更有意义吗?我很确定一切都是不可靠的,但如果路上有更多的障碍,很多人会袖手旁观…这真的取决于技术如何你的用户非常有能力。如果你发送的东西带有共享机密,你最终会遇到与DVD/CSS保护系统相同的问题(破解一个,破解全部)。如果你发送的东西带有私钥/证书(每个应用程序一个),如果您怀疑存在违规行为,您可以撤销给定的证书。无论哪种方式,如果有人愿意反汇编代码,他们可能会找到密钥/私钥(您无法很好地锁定该密钥,因为您希望使用它)。