首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护REST API / web服务的最佳实践

保护REST API / web服务的最佳实践
EN

Stack Overflow用户
提问于 2008-08-11 05:44:43
回答 18查看 313.3K关注 0票数 836

在设计REST API或服务时,是否有处理安全性(身份验证、授权、身份管理)的最佳实践?

在构建SOAP API时,您可以使用WS-Security作为指南,并且有许多关于该主题的文献。我发现有关保护REST端点的信息较少。

虽然我理解REST有意没有类似于WS-*的规范,但我希望出现最佳实践或推荐的模式。

任何讨论或相关文档的链接都将不胜感激。如果这很重要,我们将使用带有POX/JSON序列化消息的WCF用于我们的REST API/服务,这些消息是使用.NET框架的v3.5构建的。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2008-08-11 08:45:13

正如特威尔特所说,亚马逊S3是一个很好的合作模式。他们的请求签名确实有一些功能(例如合并时间戳),可以帮助防止意外和恶意的请求重放。

HTTP Basic的好处是几乎所有的HTTP库都支持它。当然,在这种情况下,您需要使用SSL,因为通过网络发送明文密码几乎是一件坏事。使用SSL时,Basic比Digest更可取,因为即使调用者已经知道需要凭据,Digest也需要额外的往返来交换nonce值。对于Basic,调用者只需在第一次发送凭据。

一旦建立了客户端的身份,授权实际上只是一个实现问题。但是,您可以将授权委托给具有现有授权模型的其他组件。同样,Basic在这里的好处是,您的服务器最终获得了客户端密码的明文副本,您可以根据需要简单地将其传递给基础架构中的另一个组件。

票数 302
EN

Stack Overflow用户

发布于 2008-08-11 06:07:04

除了HTTP之外,没有其他的REST标准。现在已经有成熟的REST服务了。我建议您看一看它们,了解一下它们是如何工作的。

例如,我们在开发自己的S3 REST服务时,借鉴了亚马逊的很多想法。但我们选择不使用基于请求签名的更高级的安全模型。更简单的方法是基于SSL的HTTP基本身份验证。你必须决定什么最适合你的情况。

另外,我强烈推荐O‘’reilly的RESTful Web Services这本书。它解释了核心概念,并提供了一些最佳实践。您通常可以采用他们提供的模型,并将其映射到您自己的应用程序。

票数 117
EN

Stack Overflow用户

发布于 2008-09-18 02:55:07

您可能还想了解一下OAuth,它是一种新兴的开放协议,用于基于令牌的授权,专门针对http。

它与flickrremember the milk "rest“apis所采用的方法非常相似(不一定是restful apis的好例子,但却是基于令牌的方法的好例子)。

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

https://stackoverflow.com/questions/7551

复制
相关文章

相似问题

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