首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全webapi 2未经授权或用户登录

安全webapi 2未经授权或用户登录
EN

Stack Overflow用户
提问于 2015-04-09 10:20:20
回答 3查看 887关注 0票数 1

我到处寻找关于保护我的webApi的答案,但我总是被指向OAuth或openID,但我不希望用户登录或认证。这是我的问题:

我有一个webapi,通过Javascript来获取Json中的数据。该数据在该页的Html中使用。(部署在Azure)

现在,我不希望其他人通过Javascript或简单的get请求获得这些数据。只有我的html页面才允许这样做。

我正在寻找一些东西来确保我的Webapi只被我想要的应用程序所消耗。如果我查看OAuth和Azure的内容,人们总是必须登录,但是我希望这个页面是公开的,但是只有webapi需要安全。

我不能检查IP,因为调用是在浏览器的客户端完成的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-27 12:48:40

不可能对特定客户端(完全在类似浏览器的SPAs)应用程序中使用的API进行身份验证和保护。您无法保护应用程序发送到API的数据。(详见保护SPA背后的REST防止数据窃取)

如果不想介绍用户和最终用户身份验证,可以在服务器端构建一些模块,然后使用基于令牌的服务器进行服务器通信。

当然,这也是一个如何解释安全性的问题。

  • 如果只是因为你不希望其他的网络应用程序使用数据- CORS策略将完成这项工作。不太可能会有更多的孤立的情况,用户使用的浏览器,而不是流行的一次,这方面的CORS。
  • 如果您不希望大量下载数据,则可以实现一些基于IP的客户端筛选。这甚至可以在网络层上完成,这样就不需要以任何方式修改API了。
票数 1
EN

Stack Overflow用户

发布于 2015-04-09 11:45:22

作为建议,您可以保护它,确保请求有您定义的一些标头。例如,您可以使用只知道的令牌设置授权头。例如,您可以基于您和webapi共享的密钥创建一个令牌,用调用api的时间对其进行加密。web接收请求,并:

1-检查请求是否具有所需的令牌;

2-如果是这样的话,它就会像你的页面一样创建一个标记;

3-将其令牌与请求令牌匹配;

如果您通过javascript调用webapi,则可能会公开该方法。然而,这是一个想法

票数 0
EN

Stack Overflow用户

发布于 2015-04-09 13:45:08

看看CORS (跨源资源共享),它可能是您的解决方案。

在综合中,您可以只允许来自某些特定网站的Api请求。大多数,几乎所有的浏览器都支持它。

这就是在2中启用和配置它的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29535830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档