限制API使用

时间:2014-10-21 17:07:04

标签: javascript rest asp.net-web-api oauth oauth-2.0

我想对我的API设置限制,因此只有注册用户才能在其网站上使用它。 javascript将在其网站上使用,html将其粘贴到HTTP_REFERER。现在我为每个用户使用一个令牌,但它在网站上对公众可见,所以任何人都可以复制它。它会跟踪使用情况,但不会将其限制为仅限于其网站。

我的第一个想法是从服务器上的http标头获取HTTP_REFERER变量,并确保它来自用户注册的域。这不会起作用,因为JavaScript可以为空白或更改。

我的第二个想法是在粘贴的脚本中使用document.location来获取OAUTH2并将其传递回服务器。这也可以被篡改,因此它是不可靠的。

我现在正在寻找SSO作为解决方案。除了用于{{1}}之外,我对此一无所知。看看这个JS OAUTH2 Lib:https://github.com/andreassolberg/jso 它们可以用于我需要做的事情吗?

一个要求是将脚本粘贴到HTML中。他们的网站上不应该有任何其他需要完成的配置。

他们还有什么其他解决方案?

1 个答案:

答案 0 :(得分:3)

除了粘贴你的javascript之外,他们的网站上不应该有任何其他配置吗?

那么,OAUTH2可能不是您想要的,OAUTH将授权服务器的概念添加到您的Web API中,并且复杂性也在增加。

http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

如果您不打算授权用户,只是确定可以从javascript使用api的域,请启用cors并添加属性以指定允许哪些来源访问资源。示例:

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

感谢。