# OnlineToken相关问题排查
# 问题1:ESB中如何关闭某些接口的OnlineToken校验?
# 问题现象
在iPaaS系统中,默认情况下订阅关系需要传递OnlineToken进行身份验证。但是有些业务场景:不是要关闭所有订阅的OnlineToken校验,而是只针对某些特定的接口关闭OnlineToken验证。即希望某些消费者在调用时可以不传递OnlineToken,而其他接口仍然保持原有的OnlineToken验证机制。
# 问题分析
OnlineToken的作用:在ESB系统中,OnlineToken验证订阅关系,确保有授权的消费方才能访问相应的服务。
默认行为:全局配置中默认勾选在线令牌参数,对所有订阅关系要求传递OnlineToken,但在某些接口业务要求不传OnlineToken.
# 解决方案
- 在ESB管理门户中-订阅关系的配置IP功能配置消费方IP地址**,通过配置特定的消费方IP地址,使系统对该IP来源的请求免除OnlineToken验证。

# 配置示例
订阅关系提供方接口:订单数据推送服务
消费方系统:外部合作伙伴系统
配置操作:
- 添加IP:192.168.1.100(合作伙伴服务器IP)
- 保存后生效
预期效果:
- 来自192.168.1.100的请求 → 无需OnlineToken
- 其他IP的请求 → 仍需OnlineToken验证
# 注意事项
配置范围 - 确认配置仅影响目标订阅关系 - 验证其他订阅关系是否仍需要Token验证
IP变更管理 - 如果消费方IP发生变化,需要及时更新配置 - 建立IP变更通知机制,避免服务中断
# 问题2:OnlineToken校验和API策略中的Token认证校验的区别
# 问题现象
在使用iPaaS平台的API策略进行Token认证时,出现以下异常情况:
- 配置了Token认证的key和value后,认证依然失效
- 系统报错信息:"OnlineToken不存在"
- API接口调用无法通过认证,请求被拦截
# 问题分析
# 核心原因
Token和OnlineToken是两个完全不同的拦截器,不能混淆使用。
| 对比项 | Token认证 | OnlineToken认证 |
|---|---|---|
| 拦截器类型 | api策略中拦截器 | 系统默认开启的拦截器(全局配置中开关) |
| 开启方式 | 手动在api策略中配置 | 管理门户-全局配置-在线令牌(勾选) |
| 传参方式 | 根据Token认证规则传参 | Header中传OnlineToken |
| 参数来源 | 自定义配置 | API市场订阅后获取 |
# 详细分析
- 拦截器冲突:当两个拦截器同时开启时,接口调用需要同时满足两种认证方式的传参要求
- 配置混淆:认为token认证就是onlinetoken
- 参数传递不完整:只传递了一种认证参数,忽略了另一种认证要求
# 解决方案
# 1. 区分两种认证方式的使用场景
# Token认证使用方式
- 参考官方文档:http://help.primeton.com/iPaaS/9.1/product-doc/5.14.5-Token%E8%AE%A4%E8%AF%81.html (opens new window)
- 按照文档要求配置Token认证参数
- 在接口调用时传递正确的Token key和value
# OnlineToken认证使用方式
- 开启位置:管理门户 → 全局配置 → 在线令牌(勾选)
- 获取方式:
- 在API市场中订阅API
- 进入已订阅列表
- 获取OnlineToken参数值
- 调用方式:在接口调用的Header中传入:
OnlineToken: [从已订阅列表获取的value值]
# 2. 双认证同时开启时的处理
如果两个拦截器都开启,接口调用时需要:
- 按照Token认证的传值方式传递Token参数
- 同时在Header中传递OnlineToken参数
- 确保两种认证参数都正确无误
# 3. 验证步骤
- 确认当前开启了哪些认证策略
- 根据开启的策略准备对应的认证参数
- 在接口调用时同时传入所有必需的认证参数
- 验证调用结果
# 总结
| 关键点 | 说明 |
|---|---|
| 核心问题 | Token和OnlineToken是两个独立的认证拦截器 |
| 错误原因 | 混淆两种认证方式,参数传递不完整 |
| 解决方案 | 明确区分两种认证,根据需要同时传递两种参数 |