如何确保API的安全性
2017-10-24 15:37
225 查看
原文:How to Ensure the Security of Your APIs
作者:Nagarjunareddy K
翻译:Diwei
译者注:本文详细介绍了如何自定义OAuth2.0安全方案,只要按照本文描述的步骤走下去,就可以了解如何为API实施安全措施。以下为译文。
![](https://i.imgur.com/lo0eEpp.png)
目标:
定义API安全性要求
使用security scheme来应用资源和方法级策略
定义API的自定义security scheme
将OAuth2.0外部供应商策略应用到资源方法
创建一个自定义security scheme文件。
在RAML API主定义中引用自定义的security scheme。
将security scheme应用到某些资源方法中。
![](https://i.imgur.com/RYTRjTU.png)
创建security scheme文件:
返回到API designer。
在file browser部分,单击Files头部的“+”图标。
选择“新建文件夹”,在弹出对话框中输入“securitySchemes.”。
![](https://i.imgur.com/D5LyTAZ.png)
点击“Create”。
单击securitySchemes文件夹旁边的“+”图标并选择“新建文件”。
在“新建文件”对话框中,文件类型选为Security Scheme,并将文件重命名为“customTokenSecurity.raml。”
点击“Create”。
自定义security scheme:
在RAML编辑器中,选择包含类型节点的那一行,然后在冒号后面按空格键。在编辑器下面的shelf部分,单击x-{other}。
![](https://i.imgur.com/rizGTlN.png)
用customToken替换{other}。
在类型节点下面新添加一行。
点击shelf的description部分,将description节点的值设定为:. This security scheme validates requests to the API using a token provided in the request header。
按下回车键即可。
![](https://i.imgur.com/7zbAXyl.png)
点击
再点击“headers”。
![](https://i.imgur.com/RtbVl38.png)
点击“Authorization”,然后选择“description”。
![](https://i.imgur.com/itkdsDL.png)
此处description节点的值设置为:. This header should contain a valid security token。
按下回车键。点击shelf的“type,”,然后再点击“string.”。在API主定义中引用自定义的security scheme文件。
浏览文件然后选择acme-banking-api.raml。在引用了traitsLibrary文件的行后面新建一个空行,并将鼠标光标停在该空行。在它下面再添加两行。在新建的第二行中删除缩进。点击shelf的
![](https://i.imgur.com/9L2WQOo.png)
在新建行里面输入:
![](https://i.imgur.com/WaTceFK.png)
将自定义security scheme应用于所有的资源方法:
在/customers资源上面新建一行,按回车。点击shelf的
![](https://i.imgur.com/U1n5AvK.png)
点击
![](https://i.imgur.com/Dh63qGW.png)
在API控制台中,单击左上方的菜单图标。点击GET。找到请求的头部,通过验证你可以看到Authorization头部位置的许多字段。
![](https://i.imgur.com/qzzb23P.png)
注意:转到其他资源方法,并重点关注那些由于添加到RAML定义根部分以后而导致所有资源方法都已经有了的Authorization头。类似于customTokenSecurity这样的自定义security schemes是不支持使用Try It选项进行测试的。
使用OAuth2.0安全计划片段文件。
在RAML API定义中引用OAuth2.0安全方案。
在API资源方法中应用安全方案。
使用OAuth2.0安全计划片段文件:
回到API designer。在file browser部分,单击Exchange dependencies图标。
![](https://i.imgur.com/rRhDlQD.png)
单击Dependencies标题旁边的+图标。在Consume API Fragment对话框中找到OAuth2.0安全方案,然后选中该复选框。
![](https://i.imgur.com/5LtZmPT.png)
点击Add Dependency。
在RAML API规范中引用OAuth 2.0安全方案:
在file browser部分,如果文件在raml编辑器中没有打开,那么请点击acme-banking-api.raml。找到包括statement在内的customTokenSecurity并在它下面新建一行。在新行中输入:
在file browser部分,展开exchange_module文件夹,然后找到OAuth2.raml安全计划文件。单击文件名旁边的菜单图标,然后点击复制路径到剪贴板。
![](https://i.imgur.com/WAOmcAZ.png)
在RAML编辑器中,将路径粘贴到!include关键字后面的trait文件中。
注意:如果从studentFiles文件夹中将OAuth2.raml文件导入到了traits文件夹,路径应该包含securitySchemes/OAuth2.raml。
确保使用OAuth2.0安全方案更新银行客户和帐户信息的资源方法:
在/{customer_id} 嵌套的资源补丁方法中,在包含displayName节点的行下面添加一条新行。点击
![](https://i.imgur.com/dfczfH9.png)
点击
在API控制台中,单击左上方的菜单图标。点击GET方法链接。滚动到到请求头部分,通过验证可以看到授权头信息。
![](https://i.imgur.com/g5VicxL.png)
点击“Try it”按钮。选择Authorization并验证需要填写Auth数据才能发送请求。
作者:Nagarjunareddy K
翻译:Diwei
译者注:本文详细介绍了如何自定义OAuth2.0安全方案,只要按照本文描述的步骤走下去,就可以了解如何为API实施安全措施。以下为译文。
提高API安全性
![](https://i.imgur.com/lo0eEpp.png)
目标:
定义API安全性要求
使用security scheme来应用资源和方法级策略
定义API的自定义security scheme
将OAuth2.0外部供应商策略应用到资源方法
为API定义一个自定义安全方案
为了实现给API定义一个自定义安全方案,则需要:创建一个自定义security scheme文件。
在RAML API主定义中引用自定义的security scheme。
将security scheme应用到某些资源方法中。
![](https://i.imgur.com/RYTRjTU.png)
创建security scheme文件:
返回到API designer。
在file browser部分,单击Files头部的“+”图标。
选择“新建文件夹”,在弹出对话框中输入“securitySchemes.”。
![](https://i.imgur.com/D5LyTAZ.png)
点击“Create”。
单击securitySchemes文件夹旁边的“+”图标并选择“新建文件”。
在“新建文件”对话框中,文件类型选为Security Scheme,并将文件重命名为“customTokenSecurity.raml。”
点击“Create”。
自定义security scheme:
在RAML编辑器中,选择包含类型节点的那一行,然后在冒号后面按空格键。在编辑器下面的shelf部分,单击x-{other}。
![](https://i.imgur.com/rizGTlN.png)
用customToken替换{other}。
在类型节点下面新添加一行。
点击shelf的description部分,将description节点的值设定为:. This security scheme validates requests to the API using a token provided in the request header。
按下回车键即可。
![](https://i.imgur.com/7zbAXyl.png)
点击
describedBy部分。
再点击“headers”。
![](https://i.imgur.com/RtbVl38.png)
点击“Authorization”,然后选择“description”。
![](https://i.imgur.com/itkdsDL.png)
此处description节点的值设置为:. This header should contain a valid security token。
按下回车键。点击shelf的“type,”,然后再点击“string.”。在API主定义中引用自定义的security scheme文件。
浏览文件然后选择acme-banking-api.raml。在引用了traitsLibrary文件的行后面新建一个空行,并将鼠标光标停在该空行。在它下面再添加两行。在新建的第二行中删除缩进。点击shelf的
securitySchemes。
![](https://i.imgur.com/9L2WQOo.png)
在新建行里面输入:
customTokenSecurity: !include securitySchemes/customTokenSecurity.raml。
![](https://i.imgur.com/WaTceFK.png)
将自定义security scheme应用于所有的资源方法:
在/customers资源上面新建一行,按回车。点击shelf的
securedBy。
![](https://i.imgur.com/U1n5AvK.png)
点击
customTokenSecurity。按下回车新建一行。
![](https://i.imgur.com/Dh63qGW.png)
在API控制台中,单击左上方的菜单图标。点击GET。找到请求的头部,通过验证你可以看到Authorization头部位置的许多字段。
![](https://i.imgur.com/qzzb23P.png)
注意:转到其他资源方法,并重点关注那些由于添加到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图标。
![](https://i.imgur.com/rRhDlQD.png)
单击Dependencies标题旁边的+图标。在Consume API Fragment对话框中找到OAuth2.0安全方案,然后选中该复选框。
![](https://i.imgur.com/5LtZmPT.png)
点击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安全计划文件。单击文件名旁边的菜单图标,然后点击复制路径到剪贴板。
![](https://i.imgur.com/WAOmcAZ.png)
在RAML编辑器中,将路径粘贴到!include关键字后面的trait文件中。
注意:如果从studentFiles文件夹中将OAuth2.raml文件导入到了traits文件夹,路径应该包含securitySchemes/OAuth2.raml。
确保使用OAuth2.0安全方案更新银行客户和帐户信息的资源方法:
在/{customer_id} 嵌套的资源补丁方法中,在包含displayName节点的行下面添加一条新行。点击
securedBy。
![](https://i.imgur.com/dfczfH9.png)
点击
oauth2_0。
在API控制台中,单击左上方的菜单图标。点击GET方法链接。滚动到到请求头部分,通过验证可以看到授权头信息。
![](https://i.imgur.com/g5VicxL.png)
点击“Try it”按钮。选择Authorization并验证需要填写Auth数据才能发送请求。
![](https://i.imgur.com/NJ4EVqf.png)
相关文章推荐
- 如何确保API的安全性
- 如何确保Admin.id的安全性
- 如何设计好的RESTful API之安全性
- 如何确保VDI网络的连通性及安全性
- 详解HTTPS是如何确保安全性的?
- 详解HTTPS是如何确保安全性的?
- 网贼横行,如何确保网络交易安全性?
- 我们应如何确保嵌入式系统安全性?
- 如何设计好的RESTful API之安全性
- 如何设计好的RESTful API之安全性
- 如何设计好的RESTful API之安全性
- HTTPS是如何确保安全性的?
- 在线旅游平台如何借监控工具确保第三方API高可用
- 在线旅游平台如何借监控宝确保第三方API高可用
- 数字通证资产再被盗!新技术诞生如何确保数字通证资产的安全性?
- 如何忘却jQuery,开始使用JavaScript原生API
- 如何实现RESTful Web API的身份验证
- 如何向android的framework里添加新API
- API接口安全性设计
- 如何查看python selenium的api