创建后端自定义认证
如果您需要把自己的认证系统用于后端服务请求的认证鉴权,可以使用自定义认证来实现。
自定义认证包括前端和后端两种类型:
- 前端自定义认证:指ROMA Connect使用自定义的认证函数,对收到的API请求进行安全认证。
- 后端自定义认证:指API的后端服务使用自定义的认证函数,对来自ROMA Connect转发的后端服务请求进行安全认证。
本章节主要介绍如何创建一个后端自定义认证。您需要先创建一个函数后端作为认证函数,并在自定义认证中使用该函数后端作为认证后端。
创建用于后端认证的函数后端
- 登录ROMA Connect控制台,在“实例”页面单击实例上的“查看控制台”,进入实例控制台。
- 在左侧的导航栏选择“服务集成 APIC > 自定义后端”,在“后端列表”页签中单击“创建后端”。
- 在创建后端页面配置后端信息,完成后单击“立即创建”。
- “后端请求方法”必须为“POST”。
- 入参无需设置,Header和Query参数在用于后端自定义认证的函数后端中无效。
- 其他参数请参考创建函数后端进行设置。
后端创建完成后,页面自动跳转到该后端的编辑器页面,后端类型默认为数据后端。
- 开发函数后端的功能实现。
在编辑器的左上角单击“文件 > 新建函数后端 > 空白模板”,在弹窗中单击“确定”,然后编写用于安全认证的函数脚本,完成后单击“保存”。
用于后端自定义认证的函数脚本应满足如下条件:
- 函数脚本支持调用的请求参数:
Body参数:自定义认证中定义的用户数据,参数值在创建自定义认证时设置。函数脚本中调用参数的格式为:body["user_data"]。
- 函数脚本定义的响应消息:
{ "status": "allow/deny", "context": { "user": "abc" } }
- status:必选字段,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。
- context:必选字段,为认证的响应结果。只支持字符串类型键值对,键值不支持JSON对象或数组。
context中的数据为您自定义的字段,认证通过后可作为系统参数(后端认证参数)映射到API的后端服务请求参数中。其中API后端服务中填写的“系统参数名称”与context中的参数名称必须完全一致,且区分大小写。context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1-32个字符。
用户数据定义脚本示例:
function execute(data){ data=JSON.parse(data) body=data.body if(body["user_data"]=='abc'){ return{ "status": "allow", "context": { "user": "abcd" } } }else{ return{ "status": "deny" } } }
- 函数脚本支持调用的请求参数:
- 测试函数后端的功能。
在页面右上角单击“测试”,在下方的“测试参数”处,根据函数后端中的脚本定义,增加认证所需的请求参数,然后单击“立即测试”,发送请求。
以上一步的用户数据定义脚本示例为例,需要在Body参数中填写请求内容{"user_data": "abc"},作为后端服务请求的认证参数。
当测试结果返回的status值为“allow”时,表示测试成功。
- 部署函数后端。
创建后端自定义认证
在创建后端自定义认证前,请确保已有用于后端自定义认证的函数后端,否则请提前创建用于后端认证的函数后端。
- 在实例控制台左侧的导航栏选择“服务集成 APIC > API策略”,在“自定义认证”页签下单击“创建自定义认证”。
- 在创建自定义认证弹窗中配置后端自定义认证信息,完成后单击“确定”。
表1 后端自定义认证配置 参数
说明
认证名称
填写自定义认证的名称,根据规划自定义。建议您按照一定的命名规则填写自定义认证名称,方便您快速识别和查找。
集成应用
选择自定义认证所属的集成应用。
类型
创建后端自定义认证时,选择“后端”。
函数地址
选择用于后端自定义认证的函数后端,仅可以选择状态为“已部署”的函数后端。
缓存时间(秒)
填写认证结果的缓存时间。值为0时代表不缓存,最大支持3600秒。
宽松模式
开启后,当自定义函数服务不可用(与自定义函数服务建立连接失败或者自定义函数服务返回5xx响应)时,ROMA Connect仍然接受客户端请求。
是否发送body
是否把后端请求的body信息发送给认证函数。
用户数据
自定义的认证请求参数。