如何确保API的安全性
目标:
- 定义API安全性要求
- 使用security scheme来应用资源和方法级策略
- 定义API的自定义security scheme
- 将OAuth2.0外部供应商策略应用到资源方法
为API定义一个自定义安全方案
为了实现给API定义一个自定义安全方案,则需要:
- 创建一个自定义security scheme文件。
- 在RAML API主定义中引用自定义的security scheme。
- 将security scheme应用到某些资源方法中。
创建security scheme文件:
- 返回到API designer。
- 在file browser部分,单击Files头部的“+”图标。
选择“新建文件夹”,在弹出对话框中输入“securitySchemes.”。
点击“Create”。
- 单击securitySchemes文件夹旁边的“+”图标并选择“新建文件”。
- 在“新建文件”对话框中,文件类型选为Security Scheme,并将文件重命名为“customTokenSecurity.raml。”
- 点击“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的安全性的更多相关文章
- YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性
ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.Android设备.IOS等) ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的请求都是走的Http协议 ...
- Web Api的安全性
Web Api的安全性 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的 ...
- Web API 的安全性
Web API 的安全性 ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.An ...
- [转]使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
本文转自:http://www.cnblogs.com/fzrain/p/3552423.html 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html ...
- 如何设计好的RESTful API之安全性
保证RESTful API的安全性,主要包括三大方面: a) 对客户端做身份认证 b) 对敏感的数据做加密,并且防止篡改 c) 身份认证之后的授权 1.对客户端做身份认证,有几种常见的做法: 1)在请 ...
- 如何构建和设计以确保 API 的安全性
如何构建和设计以确保 API 的安全性 面对常见的OWASP十大威胁.未经授权的访问.拒绝服务攻击.以及窃取机密数据等类型的攻击,企业需要使用通用的安全框架,来保护其REST API,并保证良好的用户 ...
- 如何设计提高服务API的安全性(一)基础介绍
场景 现今越来越多公司提供了Sass平台服务,大部分也直接提供API.如快递鸟.微信Api.云服务.如何保证这些服务的安全性是一门重要的课题.如快递跟踪.机票查询等很便捷地影响着我们d的生活,对这些技 ...
- 如何设计提高服务API的安全性(二)API密钥方式详解
在上文已经讲述了基础介绍,这篇文章详细讲解API密钥方式. 利用何种加密方式呢? 经过上面加密算法的理解,单向加密不仅性能高,而且有压缩性,即长度一致,有效减少网络传输过程中的字节大小.适合我们这种调 ...
随机推荐
- 网站开发进阶(三十七)JSP页面跳转问题解决
JSP页面跳转问题解决 PS:本篇博文质量欠佳,仅供个人学习之用. 前言 在做Web开发时,对别人的应用(jsp+servlet)进行服务器部署时出现了页面跳转无效的情况.但是项目在本地未出现此状况. ...
- Linux信号实践(5) --时间与定时器
三种不同精度的睡眠 1.sleep #include <unistd.h> unsigned int sleep(unsigned int seconds); RETURN VALUE Z ...
- 分布式进阶(十) linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel
linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Li ...
- ECMAScript 6 入门简介
ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级 ...
- UIController子类控件 UI_06
1.UIImageView 是用来显示图片的控件,相当于相框,用来显示UIImage对象 //初始化UIImage对象及为其加载图片 //第一种方式 // UII ...
- mysql进阶(二十三)数据库事务四大特性
数据库事务四大特性 原子性.一致性.分离性.持久性 原子性 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行.这种特性称为 ...
- 《java入门第一季》之eclipse快捷键
Eclipse快捷键大全(转载) Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当 ...
- 更新Cocos2D支持Xcode 7
原文链接(有节选简写) Apple已经释放出Xcode7,给我们带来了Swift2和每个平台的最新版本支持.Cocos2D却还在等待更新去兼容Apple的改变.不幸的是,SpriteBuilder还未 ...
- ARM linux常用汇编语法
汇编语言每行的语法: lable: instruction ; comment 段操作: .section 格式: .section 段名 [标志] [标志]可以 ...
- Struts源码之ValueStack
/** * ValueStack allows multiple beans to be pushed in and dynamic EL expressions to be evaluated ag ...