wcf - 最佳REST APi / web服务实践

  显示原文与译文双语对照的内容

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

在构建一个 SOAP API时,你有WS-Security作为指南,并且该主题有很多文献。 我发现关于保护REST端点的信息较少。

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

任何对相关文档的讨论或者链接都会非常感谢。 如果有问题,我们将使用WCF和 REST API的序列化消息为我们的s/服务使用 v3.5. NET 框架构建的消息。

时间: 原作者:

你可能还想看看 OAuth,这是一个新兴的token-based授权协议,它专门针对 http api 。

它非常类似于python采取的方法 flickrrememberthemilk软件"其余部分"api ( 不一定是 restful api的好例子,但是token-based方法的好例子) 。

这些答案中的每个人都忽略了真正的访问控制/授权。

例如你的REST api/Web服务 关于发布/geting医疗记录,你可能想定义访问控制 policie,关于谁可以访问数据以及在哪种情况下。 举个例子:

  • 医生可以得到病人的医疗记录,他们有一个护理关系
  • 没有人可以将医疗数据发布到实践时间之外( 例如。 9到 5 )
  • 最终用户可以获取他们自己的医疗记录,也可以获得他们作为监护人的医疗记录
  • 护士可以更新属于护士的病人的医疗记录。

为了定义和实现这些fine-grained授权,你需要使用一个名为XACML的attribute-based访问控制语言,即可以扩展访问控制标记语言。

这里的其他标准适用于以下内容:

  • OAuth: 身份验证。联合和授权 比如 允许一个服务代表我的另一个服务( Facebook可以投递到我的Twitter )
  • SAML: 身份联合/站点 SSO 。SAML非常关心用户是谁。
  • ws-security/ws-*标准:这些关注于SOAP服务之间的通信。 它们特定于application-level消息传递格式( 肥皂),它们处理消息传递 比如 可靠性,安全性,保密性,完整性,原子性,事件等方面。 无覆盖访问控制,所有都特定于 SOAP 。

XACML是 technology-agnostic 。它可以应用到java应用程序,.NET,python,ruby 。 Web服务,REST api,等等。

以下是有趣的资源:

原作者:

我遇到过的关于安全性的一个最好的帖子就是 1 雨滴 。 MySpace使用 api OAuth也可以安全,你可以在RestChess代码中完全访问他们的自定义频道,这我做了很多探索。 这是在混合的演示,你可以在这里找到投递

感谢你的出色建议。 我们最终使用了一个自定义的HTTP头来传递来自客户端的标识令牌,以便准备将 RESTful API与来自微软的即将到来的Zermatt身份框架集成。 我在这里描述了问题 ,这里是和我们的解决方案 我并且采取了 tweakt 建议,买了的rest Web服务 - 一个很好的书如果你正在构建一个任何形式的restfulapi 。

原作者:
...