Java 服务器如何仅允许预先批准的客户端与之通信

Java 服务器如何仅允许预先批准的客户端与之通信,java,c++,c,Java,C++,C,我想知道服务器如何确保来自客户端的请求只来自有效的预先批准的客户端,有人能告诉我使用什么算法以及我的选项吗?在客户端连接到服务器后的某个时间段,我从客户端发送一个密码作为第一条消息。如果未收到此消息,则客户端已断开连接。 除此之外,您还可以记录客户端的IP地址,然后阻止来自此客户端的进一步连接,可能会持续一段时间。如果您准备处理完整的X.509证书问题 这样,您的客户端只能在安装了正确的客户端证书的情况下进行身份验证 它并不适用于所有情况(例如,大多数银行似乎并不关心),但它可能非常适合您的情况

我想知道服务器如何确保来自客户端的请求只来自有效的预先批准的客户端,有人能告诉我使用什么算法以及我的选项吗?

在客户端连接到服务器后的某个时间段,我从客户端发送一个密码作为第一条消息。如果未收到此消息,则客户端已断开连接。

除此之外,您还可以记录客户端的IP地址,然后阻止来自此客户端的进一步连接,可能会持续一段时间。

如果您准备处理完整的X.509证书问题

这样,您的客户端只能在安装了正确的客户端证书的情况下进行身份验证


它并不适用于所有情况(例如,大多数银行似乎并不关心),但它可能非常适合您的情况。

您希望实现相互身份验证,即服务器和客户端都能确保彼此身份的真实性

这是一个相当新的概念,因为它通常是单方面的身份验证。我将从这里开始,在oracle网站上使用web服务的完整示例。您无法获得比这更可靠的信息:)

摘自链接:

当您使用相互身份验证发送消息时,只有当客户端信任服务器的证书并且服务器信任客户端的证书时,才可能建立连接。交换证书和设置连接属性的过程称为安全套接字层(SSL)握手。有关详细信息,请参阅《Java安全套接字扩展(JSSE)参考指南》中的“SSL协议概述”一节


阻止其他人编写与您的应用程序一起工作的客户端几乎是不可能的。如果他们可以监视客户机和服务器之间的网络流量,并且他们有应用程序的副本,他们就可以找到它。你可以试着让它变得困难,但你只是让它们慢下来,而不是阻止它们


您可以使用代码混淆来保护分布式代码,并使用加密来保护网络流量。

您的问题不是很清楚。你说的“预批准”是指预注册吗?如果是,您将在他们连接到服务器时验证他们的凭据(可能是用户名/密码或IP地址等)


如果此HTTP服务器仅由特定用户组使用,则您可以在内部(intranet)托管,或只允许在防火墙中使用经批准的IP地址

你使用的有效性定义是什么?你是专门指基于web的交易吗?你需要付出一些努力…通过有效的方式,比如说在基于http的服务器中,我们只希望我们开发的客户端连接到,而不希望其他人编写一些自定义客户端,我可以使用一些secrey密钥机制吗?Hi Mitch,这正是我想知道的是从哪里开始,以便我可以把努力。我曾在谷歌上搜索过一点,但如果有人对此发表评论,我的工作会变得更轻松、更快,这就是为什么我要问,要阻止其他人编写与你的应用程序相关的客户端几乎是不可能的。如果他们可以监视客户机和服务器之间的网络流量,并且他们有应用程序的副本,他们就可以找到它。你可以尝试使加密变得困难,但你只是在减慢它们的速度,而不是阻止它们。