3

I wonder how can the server makes sure that the requests that are coming from clients are coming from only valid pre-approved clients, can anyone let me know what algorithm to use and what are my options?

4

5 回答 5

1

您正在寻求实现相互身份验证 - 服务器和客户端都可以确保彼此身份的真实性。

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

摘自链接:

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

http://developers.sun.com/appserver/reference/techart/mutual_auth.html

于 2012-06-08T02:45:59.997 回答
0

如果您准备好处理完整的 X.509 证书麻烦,TLS 还提供了对客户端证书进行身份验证的选项

这样,您的客户端只有在安装了正确的客户端证书时才能进行身份验证。

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

于 2012-06-08T02:40:41.220 回答
0

在客户端连接到服务器后的一段时间内,我发送一个密码作为来自客户端的第一条消息。如果没有收到,则客户端断开连接。
除此之外,您可以记下客户端的 IP 地址,然后阻止来自该客户端的进一步连接,可能会持续一段时间。

于 2012-06-08T02:37:04.717 回答
0

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

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

于 2012-06-08T02:51:38.563 回答
0

你的问题不是很清楚。当您说,预先批准时,是否意味着预先注册?如果是,您将获得他们的凭据(可能是用户名/密码或 IP 地址等)以在他们连接到服务器时进行验证。

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

于 2012-06-08T06:33:20.433 回答