我正在使用php的SoapServer
内置类创建一个Web服务。我已经运行了一些基本的测试,似乎工作正常,但现在我需要限制谁可以使用该服务。
假设只有同一服务器上的其他脚本试图使用我的服务,并且他们会在服务器端执行此操作(而不是使用AJAX或类似方法),我的服务是否有任何方法可以识别所有者请求者?
我可以将服务限制为仅限来自特定来源的请求,但这似乎非常严格或非常不可靠,具体取决于我是否允许访问目录中的任何脚本而不是特定脚本。
我不清楚我是否可以限制用户在服务器上的访问权限,因为原始请求脚本的用户将是www。
答案 0 :(得分:1)
以下是您的一些选择:
正如vivek所提到的,网址中的一个键可以解决这个问题,我已经多次使用过了,它运行良好,并且还允许您监控谁在使用该服务(不同的消费者,不同的密钥)< / p>
您可以通过IP限制脚本的使用。这就像限制的核心,我已经看到它主要用于在原始服务器之外授予服务的地方,但是VPN会是一种过度杀伤。
当然,您可能需要完全身份验证,但这在编程和有用性方面都有太多的开销。
答案 1 :(得分:0)
您始终可以针对您选择的数据源实施HTTP身份验证。 Apache有各种各样的选项,可以针对无数来源进行Digest和Basic auth(我们使用mod_auth_mysql来保护php webdav解决方案),但PHP也有很好的文档说明如何在应用程序级别执行此操作。
答案 2 :(得分:0)
为什么不在localhost vhost上提供Web服务?
不完全不透水,但实际上却相对简单。
或者在防火墙端口上运行的虚拟主机?
下进行。
答案 3 :(得分:-1)
您可以使用注册密钥作为最着名的API,例如天气错误......
因此,当请求进入时,您可以检查代码并查看用户是否已注册使用您的API。