OSB 12C中传递JWT授权头至外部业务服务的问题求助
OSB 12C 无验证转发JWT授权头解决方案
问题本质
OSB 12C的HTTP传输组件默认会根据认证策略干预请求头:
- 当业务服务认证设为
None时,OSB会自动清理所有认证类请求头(包括Authorization) - 设为
Custom时,OSB会强制触发未配置的自定义认证逻辑,直接返回401,请求无法进入流水线
配置步骤
1. 代理服务HTTP传输配置
将代理服务的HTTP传输认证方式设为None,确保请求能正常进入流水线处理。
2. 流水线中手动传递授权头
在代理服务的请求流水线中添加「复制操作(Copy Action)」,将入站请求的Authorization头复制到出站请求:
- 源路径:
$inbound/transport/request/http:headers/http:Authorization - 目标路径:
$outbound/transport/request/http:headers/http:Authorization
如果需要保留所有HTTP头,也可以直接复制整个头集合:
- 源路径:
$inbound/transport/request/http:headers - 目标路径:
$outbound/transport/request/http:headers
3. 业务服务HTTP传输配置
将业务服务的HTTP传输认证方式设为None,此时OSB不会自动清理已通过流水线手动传递的Authorization头,会直接转发至外部业务服务。
4. 调试验证
在代理和业务服务的流水线中添加日志操作,打印以下内容确认头传递状态:
- 入站头:
$inbound/transport/request/http:headers - 出站头:
$outbound/transport/request/http:headers
额外排查点
- 检查OSB全局安全策略,确认没有全局规则在自动清理认证头
- 确保Postman发送的
Authorization头格式合规(通常为Bearer <JWT_TOKEN>)
内容的提问来源于stack exchange,提问作者Hussain Akbar
相关产品推荐
相关产品推荐

