目标:

  • 定义API安全性要求
  • 使用security scheme来应用资源和方法级策略
  • 定义API的自定义security scheme
  • 将OAuth2.0外部供应商策略应用到资源方法

为API定义一个自定义安全方案

为了实现给API定义一个自定义安全方案,则需要:

  • 创建一个自定义security scheme文件。
  • 在RAML API主定义中引用自定义的security scheme。
  • 将security scheme应用到某些资源方法中。

创建security scheme文件:

  1. 返回到API designer。
  2. 在file browser部分,单击Files头部的“+”图标。
  3. 选择“新建文件夹”,在弹出对话框中输入“securitySchemes.”。

  4. 点击“Create”。

  5. 单击securitySchemes文件夹旁边的“+”图标并选择“新建文件”。
  6. 在“新建文件”对话框中,文件类型选为Security Scheme,并将文件重命名为“customTokenSecurity.raml。”
  7. 点击“Create”。

自定义security scheme:

在RAML编辑器中,选择包含类型节点的那一行,然后在冒号后面按空格键。在编辑器下面的shelf部分,单击x-{other}。

用customToken替换{other}。

在类型节点下面新添加一行。

点击shelf的description部分,将description节点的值设定为:. This security scheme validates requests to the API using a token provided in the request header。

按下回车键即可。

点击describedBy部分。

再点击“headers”。

点击“Authorization”,然后选择“description”。

此处description节点的值设置为:. This header should contain a valid security token。

按下回车键。点击shelf的“type,”,然后再点击“string.”。在API主定义中引用自定义的security scheme文件。

浏览文件然后选择acme-banking-api.raml。在引用了traitsLibrary文件的行后面新建一个空行,并将鼠标光标停在该空行。在它下面再添加两行。在新建的第二行中删除缩进。点击shelf的securitySchemes

在新建行里面输入:customTokenSecurity: !include securitySchemes/customTokenSecurity.raml

将自定义security scheme应用于所有的资源方法:

在/customers资源上面新建一行,按回车。点击shelf的securedBy

点击customTokenSecurity。按下回车新建一行。

在API控制台中,单击左上方的菜单图标。点击GET。找到请求的头部,通过验证你可以看到Authorization头部位置的许多字段。

注意:转到其他资源方法,并重点关注那些由于添加到RAML定义根部分以后而导致所有资源方法都已经有了的Authorization头。类似于customTokenSecurity这样的自定义security schemes是不支持使用Try It选项进行测试的。

为API使用OAuth2.0安全方案,提高API资源的安全

为了保护API资源的安全,可以使用OAuth2.0定义安全方案。需要做的是:

  • 使用OAuth2.0安全计划片段文件。

  • 在RAML API定义中引用OAuth2.0安全方案。

  • 在API资源方法中应用安全方案。

使用OAuth2.0安全计划片段文件:

回到API designer。在file browser部分,单击Exchange dependencies图标。

单击Dependencies标题旁边的+图标。在Consume API Fragment对话框中找到OAuth2.0安全方案,然后选中该复选框。

点击Add Dependency。

在RAML API规范中引用OAuth 2.0安全方案:

在file browser部分,如果文件在raml编辑器中没有打开,那么请点击acme-banking-api.raml。找到包括statement在内的customTokenSecurity并在它下面新建一行。在新行中输入:oauth2_0: !include

在file browser部分,展开exchange_module文件夹,然后找到OAuth2.raml安全计划文件。单击文件名旁边的菜单图标,然后点击复制路径到剪贴板。

在RAML编辑器中,将路径粘贴到!include关键字后面的trait文件中。

注意:如果从studentFiles文件夹中将OAuth2.raml文件导入到了traits文件夹,路径应该包含securitySchemes/OAuth2.raml。

确保使用OAuth2.0安全方案更新银行客户和帐户信息的资源方法:

在/{customer_id} 嵌套的资源补丁方法中,在包含displayName节点的行下面添加一条新行。点击securedBy

点击oauth2_0

在API控制台中,单击左上方的菜单图标。点击GET方法链接。滚动到到请求头部分,通过验证可以看到授权头信息。

点击“Try it”按钮。选择Authorization并验证需要填写Auth数据才能发送请求。

如何确保API的安全性的更多相关文章

  1. YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性

    ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.Android设备.IOS等) ...

  2. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的请求都是走的Http协议 ...

  3. Web Api的安全性

    Web Api的安全性 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的 ...

  4. Web API 的安全性

    Web API 的安全性 ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.An ...

  5. [转]使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性

    本文转自:http://www.cnblogs.com/fzrain/p/3552423.html 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html ...

  6. 如何设计好的RESTful API之安全性

    保证RESTful API的安全性,主要包括三大方面: a) 对客户端做身份认证 b) 对敏感的数据做加密,并且防止篡改 c) 身份认证之后的授权 1.对客户端做身份认证,有几种常见的做法: 1)在请 ...

  7. 如何构建和设计以确保 API 的安全性

    如何构建和设计以确保 API 的安全性 面对常见的OWASP十大威胁.未经授权的访问.拒绝服务攻击.以及窃取机密数据等类型的攻击,企业需要使用通用的安全框架,来保护其REST API,并保证良好的用户 ...

  8. 如何设计提高服务API的安全性(一)基础介绍

    场景 现今越来越多公司提供了Sass平台服务,大部分也直接提供API.如快递鸟.微信Api.云服务.如何保证这些服务的安全性是一门重要的课题.如快递跟踪.机票查询等很便捷地影响着我们d的生活,对这些技 ...

  9. 如何设计提高服务API的安全性(二)API密钥方式详解

    在上文已经讲述了基础介绍,这篇文章详细讲解API密钥方式. 利用何种加密方式呢? 经过上面加密算法的理解,单向加密不仅性能高,而且有压缩性,即长度一致,有效减少网络传输过程中的字节大小.适合我们这种调 ...

随机推荐

  1. 12.3、Libgdx的图像之截屏

    (官网:www.libgdx.cn) 接下来的示例说明怎样进行截屏并且保存为PNG格式. public class ScreenshotFactory { private static int cou ...

  2. Eclipse 创建 Maven 项目、Maven JavaWeb 项目

    Eclipse 创建 Maven 项目         新建一个maven项目          (默认)(如果不行第一个Create a simple ... 也选中) 默认         Jav ...

  3. HTML5 移动开发入门知识点

    转自:http://www.cnblogs.com/blog-zwei1989/archive/2012/12/12/2815049.html 1.先来看淘宝无线wiki要求在页面中添加的meta标签 ...

  4. Dynamics CRM2011 通过DeveloperToolkit在VS中部署遇到的问题

    接上一篇继续,说个在部署的过程中我遇到了个问题:"Error registering plugins and/or workflows. Plug-in assembly does not ...

  5. lvs与haproxy

    最近一直在看一些高可用性的负载均衡方案,当然那些f5之类的硬件设备是玩不起也接触不到了.只能看这些for free的开源方案. 目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实 ...

  6. Esper剖析

    Esper剖析 最近在看论文,发现文中有些语言自己未曾见过,经过一番搜索,才发觉是自己接触到了新知识. 官网: )esper的核心包包含了EPL语法解析引擎,事件监听机制,事件处理等核心模块. (2) ...

  7. Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程

    Android For JNI(六)--交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的 android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的术 ...

  8. 关于使用Xcode自带的单元测试UnitTest的介绍

    什么是单元测试? 单元测试就是为你的方法专门多写一个测试函数.以保证你的方法在不停的修改开发中.保持正确.如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量. 什么时候用到单元测试: ...

  9. ubuntu 的挂起与休眠

    待机 计算机将目前的运行状态等数据存放在内存,关闭硬盘.外设等设备,进入等待状态.此时内存仍然需要电力维持其数据,但整机耗电很少.恢复时计算机从内存读 出数据,回到挂起前的状态,恢复速度较快.一般笔记 ...

  10. 【Matlab编程】马氏链随机模拟

    本文是利用蒙特卡罗算法对马氏链过程的模拟.假设有10个状态,从每个状态到与之相邻状态的概率是相同的,仿真次数为1000,及进行了1000次状态转移.我们以动画的形式再现了状态转移的过程,并记录了到达每 ...