Web services 限制RESTAPI访问

Web services 限制RESTAPI访问,web-services,api,rest,web-applications,web,Web Services,Api,Rest,Web Applications,Web,我有一个面向公众的API,在内部使用GoogleMapsAPI服务返回一些数据。该API目前主要用于内部目的,通过webapplication调用。 但是,我希望限制此API的使用,即仅当用户(未注册)浏览时,才应从我的Web应用程序(或移动应用程序)调用此API。不应授权直接对此API的http请求 我不能使用API密钥,因为webapp流也应该适用于未注册的用户。如果您不使用HTTPS,任何安全机制都有缺陷,因为它可以复制。IMHO,您可以添加一个HTTP头(例如“请求源:YourApp”)

我有一个面向公众的API,在内部使用GoogleMapsAPI服务返回一些数据。该API目前主要用于内部目的,通过webapplication调用。 但是,我希望限制此API的使用,即仅当用户(未注册)浏览时,才应从我的Web应用程序(或移动应用程序)调用此API。不应授权直接对此API的http请求


我不能使用API密钥,因为webapp流也应该适用于未注册的用户。

如果您不使用HTTPS,任何安全机制都有缺陷,因为它可以复制。IMHO,您可以添加一个HTTP头(例如“请求源:YourApp”),并检查它在API中是否存在


当然,一旦以某种方式记录下来,任何人都可以模仿这个标题。但是,如果您使用HTTPS并创建一个其他人不知道的头,您就可以防止这种情况发生。

在这样的用例中使用HTTPS对我来说似乎是过火了。使用头是一个好主意,但我相信我在未来的一段时间内不会使用SSL,只要没有人监听您的网络通信,您就不需要HTTPS。问题是您没有其他服务器层吗?企业系统通常在公共API和内部服务之间有防火墙。不过,如果您很聪明,您可以在不同的端口上运行内部API,并在防火墙/ACL上阻止对该端口的公共访问。