我在EMC上的一个平台上可以构建SaaS解决方案。

与越来越多的其他应用程序一样,该平台具有基于RESTful HTTP的API。

使用像JAX-RS这样的开发框架,构建这样的API相对容易。

但是, 正确构建它们并不容易。

建立基于HTTP的API的问题

问题不仅仅在于功能的发布。 我们知道如何开发软件 ,可用的REST / HTTP框架和库使公开功能变得容易。

但是,这只是故事的一半。 还有更多的-ilities考虑。

在REST架构风格解决其中的一些,如可扩展性进化能力

如今,许多基于HTTP的API都声称是RESTful的,但实际上不是 。 这意味着他们没有获得REST可以带来的所有好处。

在以后的文章中,我将更多地讨论如何帮助开发人员满足REST体系结构风格的所有限制。

今天,我想着重介绍API的另一个非功能性方面: 安全性

基于HTTP的API的安全性

在安全方面,我们关心CIA-triad: 机密性 , 完整性和可用性 。

Web服务的可用性与Web应用程序的可用性并没有很大的不同,这是众所周知的。 我们有集群,负载均衡器,而没有什么, 通常我们的状态很好。

另一方面,机密性和完整性都需要正确的身份验证 ,在这里事情变得更加有趣。

基于HTTP的API的身份验证

对于HTTP世界中的身份验证 ,请看一下HTTP Authentication 。

该RFC描述了基本身份验证和摘要身份验证。 两者都有缺点 ,这就是为什么您看到许多API使用替代方法的原因。

幸运的是,这些替代方案可以使用RFC中定义的相同基本机制。 该机制包括状态码401 Unauthorized以及WWW-AuthenticateAuthentication-InfoAuthorization标头。 请注意,不幸的是, Authorization标头的名称错误,因为它用于身份验证,而不是authorization 。

最后一个难题是自定义身份验证方案 。 例如, Amazon S3身份验证使用AWS自定义方案。

使用签名对基于HTTP的API进行身份验证

AWS方案依赖于签名 。 其他服务(例如EMC Atmos )也使用相同的方法。

因此,很高兴看到已经提出了新的IETF草案以标准化基于HTTP的API中签名的使用。

标准化使框架和库的构建成为可能,这将降低实现身份验证的成本,并使构建更安全的API更容易。

参考: 安全软件开发博客上的JCG合作伙伴 Remon Sinnema提供的参考文献: 使用签名保护基于HTTP的API 。

翻译自: https://www.javacodegeeks.com/2013/08/securing-http-based-apis-with-signatures.html

使用签名保护基于HTTP的API相关推荐

  1. api签名_使用签名保护基于HTTP的API

    api签名 我在EMC上的一个平台上可以构建SaaS解决方案. 与越来越多的其他应用程序一样,该平台具有基于RESTful HTTP的API. 使用JAX-RS之类的开发框架,构建这样的API相对容易 ...

  2. .NET Core微服务之基于Ocelot实现API网关服务(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...

  3. 设计一个基于用户的API限流策略 Rate Limit

    设计一个基于用户的API限流策略 Rate Limit 应用场景 API接口的流量控制策略:缓存.降级.限流.限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的.限流策略 ...

  4. 降维-基于RDD的API

    降维-基于RDD的API • Singular value decomposition (SVD) o Performance o SVD Example • Principal component ...

  5. soapui工具_基于开源的API测试工具!不再为web服务负载测试而发愁

    通过一个可视化.拖拽式的界面,LoadUI允许您实时.交互式地创建.配置和重分配负载测试.在单一测试环境下,LoadUI提供完整的测试覆盖,支持所有标准的协议和技术.它功能强大,能从任意数量的本地和远 ...

  6. 基于ArcGIS JS API实现垂直滑动缩放条

    文章目录 需求背景 需求分析 效果图 完整代码 注意事项 严格来说并不是基于ArcGIS JS API,应该是基于Dojo的dijit里面的VerticalSlider和VerticalRule,但是 ...

  7. 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  8. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

    前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...

  9. 如何基于 Notadd 构建 API (Laravel 写 API)

    如何基于 Notadd 构建 API Notadd 底层实现了 passport 机制,有统一的授权管理,主要支持两种方式进行 API 授权,一个是 client,领一个是 passport,这个在其 ...

最新文章

  1. oracle+结果拆分,ORACLE字符拆分函數返回結果集
  2. 19.3.21 计算机网络基础知识
  3. 大会直击|微软亚洲研究院刘铁岩:深度学习成功的秘密
  4. 浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)
  5. Android调试技巧之Eclipse行号和Logcat
  6. 最近发现了一条新的“致富”路
  7. oracle参数文件备份,备份的控制文件和新的数据文件
  8. Deciding the Number of Clusterings
  9. MVG基站天线测量系统获盛路通信选用
  10. 谷歌浏览器常用的搜索语法
  11. tensorflow2没有slim模块
  12. 学习笔记---ih5_九宫格_拼图
  13. 《C++ Primer 第5版》-11.2关联容器概述-康奈尔笔记
  14. 【专利撰写】专利类型
  15. DE-MerTOX™ 重金属排毒剂-道格拉斯实验室
  16. 在线免费无限制的 PDF 处理工具(转换、编辑、分割、合并、压缩)
  17. 【系统故障】解决动态库路径错误导致ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found 的问题
  18. 关于距离,K-means,层次聚类,密度聚类以及谱聚类
  19. KUDU Master迁移
  20. ubuntu系统的快捷键,软件等配置

热门文章

  1. 常数除以0的极限是什么_【极限】第四节 极限运算法则
  2. 计算机主机组成实验,计算机组成原理实验-运算器组成实验报告
  3. jep290涉及jdk版本_JDK 14 – JEP 361从预览中切换表达式
  4. cassandra使用心得_避免在Cassandra中使用清单
  5. boot gwt_带Spring Boot的GWT
  6. javafx 内存占用_JavaFX:TouchGesture内存泄漏?
  7. spring总结_Spring综合课程总结
  8. svn: 没有演进历程信息_使用默认方法的接口演进–第二部分:接口
  9. 具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB
  10. javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX