我到处寻找关于保护我的webApi的答案,但我始终指向OAuth或openID,但我不希望用户登录或验证。这是我的问题:
我有一个通过Javascript调用的webapi来获取Json中的数据。该数据用于该页面的Html。 (部署在Azure上)
现在我不希望别人通过Javascript或简单的GET请求获取该数据。只允许我的html页面这样做。
我正在寻找能够保护我的Webapi只能被我想要的应用程序使用的东西。如果我查看OAuth和Azure的东西,人们总是要登录,但我希望这个页面是公开的,但只有webapi需要是安全的。
我无法检查IP,因为呼叫是在浏览器的客户端完成的。
答案 0 :(得分:1)
无法进行身份验证,因此无法保护特定客户端(完全在浏览器中运行,如SPA)运行的API。您无法保护应用发送到API的数据。 (有关更多详细信息,请参见Protecting REST API behind SPA against data thiefs)
如果您不想引入用户和最终用户身份验证,则可以在服务器端构建一些模块,然后使用一些基于令牌的服务器与服务器进行通信。
当然,这也是您如何解释安全性的问题。
答案 1 :(得分:0)
作为建议,您可以确保请求具有您定义的某些标头。例如,您可以使用只有您知道的令牌设置Authorization标头。例如,您可以根据您和webapi共享的密钥创建令牌,并在调用api时对其进行加密。 web api收到请求并且:
1 - 检查请求是否具有所需的令牌;
2 - 如果有,它会以与页面相同的方式创建令牌;
3 - 将其令牌与请求令牌匹配;
如果您通过javascript调用webapi,则可能会暴露该方法。但是,这是一个想法
答案 2 :(得分:0)
看看CORS(跨源资源共享),它可能是您的解决方案。
在综合中,您可以仅允许来自某些特定网站的Api请求。大多数,几乎所有浏览器都支持它。
这是您在Web Api 2中启用和配置它的方法。