WSO2中API请求Header配置及应用用户名获取咨询
问题场景
我已经在WSO2 Studio Integrator中创建了如下API:
curl --location --request POST 'http://localhost:8290/internal/send-messages' --header 'accept: text/plain' --header 'Content-Type: application/json' --data-raw '{ "bankName": "heere", "uniqueIdentifier": "445334564" }'
现在需要将该API接收的请求转发至端点,同时要在转发的请求Header中添加两个参数:
MasterName: TOMSON(固定静态值,不随用户变化)clientName: TOM(需根据API Manager(已启用OAuth2认证)提供的应用用户名动态变化)
现咨询:
- 如何在请求转发至端点时为API添加静态Header(如MasterName)?
- 如何获取应用的用户名?
解决方案
1. 添加静态请求Header(MasterName)
直接在WSO2 Studio Integrator的API流中使用Header Mediator即可实现:
- 打开你的API项目,进入对应的Sequence(通常是
inSequence) - 拖拽
Headermediator到流中,配置参数:- Header Name:填入
MasterName - Header Value:填入固定值
TOMSON - Action:选择
SET(如果存在同名Header则覆盖,无则新增)
- Header Name:填入
也可以手动在Sequence的XML中添加代码:
<header name="MasterName" scope="transport" value="TOMSON"/>
注:
scope="transport"表示操作传输层Header,确保转发到端点时该Header能被正常携带。
2. 获取OAuth2认证的应用用户名并设置clientName Header
API Manager启用OAuth2认证后,认证通过的应用用户信息会被传入Integrator的消息上下文,按以下步骤操作:
步骤1:提取应用用户名
使用Property Mediator从消息上下文提取用户名,OAuth2认证后,用户名通常存储在oauth2-username或api.ut.userName属性中(根据API Manager版本和配置调整),示例代码:
<property name="clientUserName" expression="$ctx:oauth2-username" scope="default"/>
如果是基于应用的认证,也可以尝试提取应用名称:
<property name="clientUserName" expression="$ctx:api.ut.application.name" scope="default"/>
步骤2:设置动态clientName Header
用Header Mediator将提取到的用户名设置为clientName Header:
<header name="clientName" scope="transport" expression="$ctx:clientUserName"/>
完整inSequence示例片段
<sequence name="inSequence" xmlns="http://ws.apache.org/ns/synapse"> <!-- 添加静态Header --> <header name="MasterName" scope="transport" value="TOMSON"/> <!-- 提取应用用户名 --> <property name="clientUserName" expression="$ctx:oauth2-username" scope="default"/> <!-- 设置动态clientName Header --> <header name="clientName" scope="transport" expression="$ctx:clientUserName"/> <!-- 转发请求到目标端点 --> <send> <endpoint key="your_target_endpoint"/> </send> </sequence>
提示:如果不确定具体属性名,可以添加
Log Mediator打印所有上下文属性,定位包含用户名的字段:<log level="full"/>
内容的提问来源于stack exchange,提问作者Ehsan
相关产品推荐
相关产品推荐

