REST API URI设计约定

时间:2014-02-03 14:59:19

标签: rest asp.net-web-api api-design

我有一种情况,我想限制一些API只用于服务器到服务器的调用,其他API可以直接从Web浏览器调用。所有API仍应在互联网上提供。这种情况的最佳方法是什么?

http://secureapi.myserver.com/v1/resourceshttp://api.myserver.com/v1/resources

或者

http://api.myserver.com/secure/v1/resourceshttp://api.myserver.com/common/v1/resources

http://api.myserver.com/v1/resources 使用基于用户代理的检查来识别呼叫者

更好的建议将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

如果您希望仅服务器端的API实际上只能从服务器端访问,那么您必须实现适当的访问控制模型。让您的API客户端为其HTTP请求提交Authorization标头,以便服务器可以准确区分可信服务器端呼叫者和网络上的浏览器。

不要依赖用户代理字符串等可欺骗的东西。这是通过默默无闻的安全保障,并保证稍后会咬你。

请记住你的两个愿望:

  

我想限制一些API仅用于服务器到服务器的调用

  

所有API仍应在互联网上提供。

是为您的API设计正确的安全身份验证层的尖叫。

答案 1 :(得分:1)

使用跨源请求(CORS)机制。在REST API上配置它以使用CORS。

此处提供更多信息:

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

http://msdn.microsoft.com/en-us/magazine/dn532203.aspx