1

我有两台服务器。

服务器 A:Tomcat+Oracle:它包含 Web 应用程序代码。Webapp 部署在此服务器上。

服务器B:支持PHP+MySQL+大磁盘存储空间。这是在服务器 A 上运行的 Web 应用程序的文件服务器。

目前,所有用户都在服务器 A 上上传文件,服务器 A 使用 FTP 连接将它们保存在 B 上。同样,对于下载 A,使用 FTP 从 B 获取文件,然后将文件发送到浏览器。但这增加了服务器 A 的网络开销。

是否有任何安全方式,只有登录用户才能通过直接访问服务器 B 的某个 URL 来下载他们的文件?

4

3 回答 3

2

你可以使用一个短暂的一次性令牌系统。服务器 A 用于身份验证,服务器 B 用于令牌存储和文件服务器。

客户端一旦通过身份验证,就会从服务器 A 请求文件。然后服务器 A 向服务器 B 请求一次性令牌和 URL,以获取给定的文件名。服务器 B 生成令牌和 URL 并返回到服务器 A,服务器 A 又返回给客户端。

客户端现在可以使用给定的 URL 和令牌从服务器 B 请求文件。服务器 B 将检查令牌是否未被使用或过期,以及请求的文件是否与颁发令牌的文件匹配。

于 2013-10-19T20:45:57.357 回答
1

是的,当然,首先您需要实现 Web 服务以便在服务器之间建立连接。

然后一旦用户登录服务器 A 并尝试上传/下载文件,服务器 A 只需向服务器 B 发送令牌密钥(如 cookie)/密钥,因此服务器 B 将确保身份验证,最后服务器A 将用户重定向到服务器 B 进行直接连接,以减少服务器 A 的负载。

事实上,服务器 A 和 B 应该就登录的用户和可访问性相互通信,如果客户端在验证之前请求文件怎么办,所以这里服务器 B 重定向到服务器 A 进行身份验证,然后返回文件向上/向下。

于 2013-10-19T20:43:22.993 回答
0

除了 Martyn Roberts 的回答之外,我建议使用 nginx 和 ngx_http_secure_download_module 来完成此任务。

于 2013-10-21T17:46:01.523 回答