You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 API Manager如何提取客户端身份并传递至后端主机

WSO2 APIM 透传消费者身份到后端实现方案

现有场景说明

  • 已在WSO2 API Management中发布API,该API由A、B两个消费者调用
  • 当前调用流程:消费者携带OAuth凭证和请求参数调用WSO2_APIM,WSO2_APIM完成授权校验后,将请求直接转发到后端服务

核心实现逻辑

WSO2 APIM完成OAuth授权后,会将消费者的身份、订阅应用等信息存储在请求上下文中,我们可以通过请求调解序列在请求转发到后端前,从上下文提取消费者标识写入自定义请求头。

具体实现步骤

方案一:针对单个API配置(推荐,粒度更灵活)

  1. 登录WSO2 APIM Publisher门户,进入对应已发布API的详情页面
  2. 切换到**运行时(Runtime)**配置页,找到「请求调解(Request Mediation)」模块
  3. 选择添加自定义序列,填入如下调解代码:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="add-consumer-header-sequence">
    <!-- 从请求上下文读取消费者绑定的应用名称作为标识,可替换为你自定义的消费者属性字段 -->
    <property name="consumerIdentifier" expression="$ctx:api.ut.application.name" />
    <!-- 向转发的请求中添加client请求头,scope设为transport表示是传输层请求头 -->
    <header name="client" expression="$ctx:consumerIdentifier" scope="transport" />
</sequence>
  1. 保存序列配置后,重新发布API即可生效

方案二:全局生效配置(所有API都自动添加该请求头)

  1. 登录WSO2 APIM的碳管理控制台(默认地址为https://<APIM域名>:9443/carbon)
  2. 左侧菜单选择「调解(Mediation)> 序列(Sequences)」,点击「添加序列」
  3. 选择「自定义序列」,填入上述方案一的代码后,设置序列名为WSO2AM_IN_FLOW(全局入站序列固定名称)
  4. 保存序列后无需重新发布API,全局自动生效

效果验证

配置完成后分别使用消费者A、B的OAuth凭证调用API,后端服务接收请求时可读取到client请求头,值对应当前调用的消费者标识。

补充说明

  • 如果你的消费者标识没有存储在应用名称中,可在开发者门户给每个消费者的订阅应用添加自定义属性,例如新增属性custom_client_id,取值分别设为A、B,此时上述代码中属性的取值表达式可替换为$ctx:api.ut.application.metadata.custom_client_id
  • 如果需要覆盖请求中原有的同名client头,可在header标签中添加action="replace"属性
  • 若使用JWT授权模式,也可以直接从解析后的JWT声明中提取标识,取值表达式写为$ctx:jwt.claims.<你存储消费者标识的claim字段名>即可

内容的提问来源于stack exchange,提问作者chirag patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:54:05