保护RESTAPI/Web服务的最佳实践

保护RESTAPI/Web服务的最佳实践

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

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

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

如能与相关文件进行任何讨论或链接,将不胜感激。如果有关系,我们将使用WCF和POX/JSON序列化消息,用于使用.NET Framework的v3.5构建的RESTAPI/Services。


守着星空守着你
浏览 680回答 3
3回答

慕斯王

正如微调所言,AmazonS 3是一个很好的工作模式。它们的请求签名确实具有一些特性(例如包含时间戳),这些特性有助于防止意外和恶意请求重放。HTTPBasic的好处是几乎所有HTTP库都支持它。当然,在这种情况下,您需要使用SSL,因为通过网络发送明文密码几乎是一件坏事。在使用SSL时,Basic比Digest更可取,因为即使调用方已经知道需要凭据,Digest也需要额外的往返来交换当前值。使用Basic,调用方只需第一次发送凭据即可。一旦建立了客户端的身份,授权实际上只是一个实现问题。但是,可以使用现有的授权模型将授权委托给其他组件。同样,这里关于Basic的好处是,您的服务器最终得到了客户机密码的明文副本,您可以根据需要将其传递到基础结构中的另一个组件。

繁花不似锦

除了HTTP,没有其他的REST标准。外面有固定的休息服务。我建议你看一眼他们,看看他们是怎么工作的。例如,我们在开发自己的S3 REST服务时,借鉴了很多亚马逊的S3 REST服务。但是我们选择不使用基于请求签名的更高级的安全模型。更简单的方法是基于SSL的HTTPBasicauth。你必须决定什么在你的情况下最有效。另外,我强烈推荐这本书。RESTful Web服务奥莱利的。它解释了核心概念,并提供了一些最佳实践。您通常可以使用他们提供的模型并将其映射到您自己的应用程序中。

白猪掌柜的

你也可以看看奥奥斯,一种新出现的基于令牌的授权开放协议,专门针对HTTPAPI。它非常类似于Flickr和记住牛奶“REST”API(不一定是RESTfulAPI的好例子,而是基于令牌的方法的好例子)。
打开App,查看更多内容
随时随地看视频慕课网APP