- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 开始使用ROMA Connect
- 实例管理
- 集成应用管理
-
数据源管理
- ROMA Connect支持的数据源
- 接入API数据源
- 接入ActiveMQ数据源
- 接入ArtemisMQ数据源
- 接入DB2数据源
- 接入DIS数据源
- 接入DWS数据源
- 接入DM数据源
- 接入Gauss100数据源
- 接入FTP数据源
- 接入HL7数据源
- 接入HANA数据源
- 接入HIVE数据源
- 接入LDAP数据源
- 接入IBM MQ数据源
- 接入Kafka数据源
- 接入MySQL数据源
- 接入MongoDB数据源
- 接入MQS数据源
- 接入MRS Hive数据源
- 接入MRS HDFS数据源
- 接入MRS HBase数据源
- 接入MRS Kafka数据源
- 接入OBS数据源
- 接入Oracle数据源
- 接入PostgreSQL数据源
- 接入Redis数据源
- 接入RabbitMQ数据源
- 接入RocketMQ数据源
- 接入SAP数据源
- 接入SNMP数据源
- 接入SQL Server数据源
- 接入GaussDB(for MySQL)数据源
- 接入WebSocket数据源
- 接入自定义数据源
- 数据集成指导
- 服务集成指导
- 服务集成指导(旧版界面)
- 消息集成指导
- 设备集成指导
- 应用业务模型使用指导
- 扩大资源配额
- 查看审计日志
- 查看监控指标
- 权限管理
- 用户指南(新版)
- 最佳实践
-
开发指南
- 数据集成开发指导
-
服务集成开发指导
- 开发说明
- API调用认证开发(APP认证)
- API调用认证开发(IAM认证)
-
自定义后端开发(函数后端)
- 函数后端脚本开发说明
- AesUtils类说明
- APIConnectResponse类说明
- Base64Utils类说明
- CacheUtils类说明
- CipherUtils类说明
- ConnectionConfig类说明
- DataSourceClient类说明
- DataSourceConfig类说明
- ExchangeConfig类说明
- HttpClient类说明
- HttpConfig类说明
- JedisConfig类说明
- JSON2XMLHelper类说明
- JSONHelper类说明
- JsonUtils类说明
- JWTUtils类说明
- KafkaConsumer类说明
- KafkaProducer类说明
- KafkaConfig类说明
- MD5Encoder类说明
- Md5Utils类说明
- QueueConfig类说明
- RabbitMqConfig类说明
- RabbitMqProducer类说明
- RedisClient类说明
- RomaWebConfig类说明
- RSAUtils类说明
- SapRfcClient类说明
- SapRfcConfig类说明
- SoapClient类说明
- SoapConfig类说明
- StringUtils类说明
- TextUtils类说明
- XmlUtils类说明
- 自定义后端开发(数据后端)
- 后端服务签名校验开发
- 消息集成开发指导
- 设备集成开发指导
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 公共资源API
- 数据集成API
- 服务集成API
- 消息集成API
- 设备集成API
- 应用示例
- 权限和授权项
- 附录
- 历史API
- 修订记录
- SDK参考
-
常见问题
- 实例管理
-
数据集成
-
数据集成普通任务
- FDI各类数据库支持哪些数据类型?
- 跟踪号是什么,能跟踪到数据吗?
- FDI任务是否支持清空目标表?
- FDI任务只能采集单张表到单张表吗?
- 用户创建的FDI任务,同一账号的其他用户可见吗?
- FDI通过公网对接其他租户的MRS HIVE如何配置?
- 从OBS解析文件到RDS数据库,采集过一次后,后面采集会进行更新吗?
- OBS源端的CSV文件解析到关系型数据库时,列的值不对怎么办?
- MRS Hive目标字段和源端字段数据类型不匹配时,数据是否能集成到目标端?
- MRS Hive、MRS HBase和MongoDB的Mapping映射手动输入时,是否区分大小写?
- MRS Hive是否支持分区?
- 源端API类型数据源自定义周期如何设置?
- SAP是否支持分页读取视图?
- 数据集成组合任务
-
数据集成普通任务
- 服务集成
- 消息集成
- 设备集成
-
故障排除
-
数据集成任务
- MRS Hive目标端写入时出现数据乱码
- MRS Hive写入时数据全部写在第一个字段里
- 目标端任务报任务运行超时
- MySQL到MRS Hive时目标端报“could only be written to 0 of the 1 minReplication nodes. There are 2 datanode(s) running and 2 node(s) are excluded in this operation”错误
- Mysql到Mysql时源端报“Illegal mix of collations for operation 'UNION'”错误
- 源端Mysql增量采集每小时执行一次时部分数据丢失
- API到MySQL时源端报“401 unauthorized”错误
- Kafka集到Mysql目标端报“cannot find record mapping field”错误
- API到MySQL的定时任务时会出现源端报“connect timeout”错误
- Kafka到Mysql的实时任务时,MQS中的Topic下有数据,但是FDI任务没有采集到数据。
- Mysql到Mysql的定时任务,源端有类型为tinyint(1),值为2的字段,但是采集到目标端值就变成了1
- 目标端数据源为公网Kafka时,定时任务目标端报“The task executes failed.Writer data to kafka failed”错误
- 数据集成组合任务
- 数据源
- 服务集成
- 设备集成
-
数据集成任务
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
创建前端自定义认证
如果您需要把自己的认证系统用于API调用的认证鉴权,可以使用自定义认证来实现。
自定义认证包括前端和后端两种类型:
- 前端自定义认证:指ROMA Connect使用自定义的认证函数,对收到的API请求进行安全认证。
- 后端自定义认证:指API的后端服务使用自定义的认证函数,对来自ROMA Connect转发的后端服务请求进行安全认证。
本章节主要介绍如何创建一个前端自定义认证。您需要先创建一个函数后端作为认证函数,并在自定义认证中使用该函数后端作为认证后端。
创建用于前端认证的函数后端
- 登录ROMA Connect控制台,在“实例”页面单击实例上的“查看控制台”,进入实例控制台。
- 在左侧的导航栏选择“服务集成 APIC > 自定义后端”,在“后端列表”页签中单击“创建后端”。
- 在创建后端页面配置后端信息,完成后单击“立即创建”。
- “后端请求方法”必须为“POST”。
- 入参无需设置,用于自定义认证的函数后端会获取API请求中的Header和Query参数。
- 其他参数请参考创建函数后端进行设置。
后端创建完成后,页面自动跳转到该后端的编辑器页面,后端类型默认为数据后端。
- 开发函数后端的功能实现。
在编辑器的左上角单击“文件 > 新建函数后端 > 空白模板”,在弹窗中单击“确定”,然后编写用于安全认证的函数脚本,完成后单击“保存”。
用于前端自定义认证的函数脚本应满足如下条件:
- 函数脚本支持获取的请求参数:
- Header参数:自定义认证中定义的Header位置的身份来源参数,参数值从使用该前端自定义认证的API请求中传入。函数脚本中调用参数的格式为:body["headers"]["参数名"]。
- Query参数:自定义认证中定义的Query位置的身份来源参数,参数值从使用该前端自定义认证的API请求中传入。函数脚本中调用参数的格式为:body["queryStringParameters"]["参数名"]。
- Body参数:自定义认证中定义的用户数据,参数值在创建自定义认证时设置。函数脚本中调用参数的格式为:body["user_data"]。
说明:
在前端自定义认证过程中,API请求的Header和Query参数会被放到后端请求Body体的headers和queryStringParameters参数中,并传递给认证函数。因此函数脚本中需要调用Header和Query参数时,需要从后端请求的Body体中获取。headers和queryStringParameters参数在后端请求Body体中的示例请参见测试步骤的示例。
- 函数脚本定义的响应消息:
{ "status": "allow/deny", "context": { "user": "abc" } }
- status:必选字段,用于标识认证结果。只支持“allow”或“deny”,“allow”表示认证成功,“deny”表示认证失败。
- context:必选字段,为认证的响应结果。只支持字符串类型键值对,键值不支持JSON对象或数组。
context中的数据为您自定义的字段,认证通过后可作为系统参数(前端认证参数)映射到API的后端服务请求参数中。其中API后端服务中填写的“系统参数名称”与context中的参数名称必须完全一致,且区分大小写。context中的参数名称必须以英文字母开头,支持英文大小写字母、数字、下划线和中划线,且长度为1-32个字符。
Header参数定义脚本示例:function execute(data){ data=JSON.parse(data) body=data.body if(body["headers"]["test"]=='abc'){ return{ "status": "allow", "context": { "user": "abcd" } } }else{ return{ "status": "deny" } } }
Query参数定义脚本示例:
function execute(data){ data=JSON.parse(data) body=data.body if(body["queryStringParameters"]["test"]=='abc'){ return{ "status": "allow", "context": { "user": "abcd" } } }else{ return{ "status": "deny" } } }
Body参数定义脚本示例:
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" } } }
- 函数脚本支持获取的请求参数:
- 测试函数后端的功能。
在页面右上角单击“测试”,在下方的“测试参数”处,根据函数后端中的脚本定义,增加认证所需的请求参数,然后单击“立即测试”,发送请求。当测试结果返回的status值为“allow”时,表示测试成功。
“测试参数”处填写的是后端请求参数,Header、Query和Body认证参数均需要填写在后端请求的Body参数中,以上一步的脚本示例为例,各认证参数的填写示例如下:
- 部署函数后端。
创建前端自定义认证
在创建前端自定义认证前,请确保已有用于前端自定义认证的函数后端,否则请提前创建用于前端认证的函数后端。
- 在实例控制台左侧的导航栏选择“服务集成 APIC > API策略”,在“自定义认证”页签下单击“创建自定义认证”。
- 在创建自定义认证弹窗中配置前端自定义认证信息,完成后单击“确定”。
表1 前端自定义认证配置 参数
说明
认证名称
填写自定义认证的名称,根据规划自定义。建议您按照一定的命名规则填写自定义认证名称,方便您快速识别和查找。
集成应用
选择自定义认证所属的集成应用。
类型
创建前端自定义认证时,选择“前端”。
函数地址
选择用于前端自定义认证的函数后端,仅可以选择状态为“已部署”的函数后端。
缓存时间(秒)
填写认证结果的缓存时间。值为0时代表不缓存,最大支持3600秒。
宽松模式
开启后,当自定义函数服务不可用(与自定义函数服务建立连接失败或者自定义函数服务返回5xx响应)时,ROMA Connect仍然接受客户端请求。
身份来源
添加用于认证的请求参数,支持添加Header参数和Query参数。
当“缓存时间”不为0时,必须添加请求参数。当缓存认证结果时,此参数将作为认证结果的缓存索引。
是否发送body
是否把API请求的Body信息发送给认证函数。
用户数据
自定义的认证请求参数,与“身份来源”一同作为认证请求参数。