oauth - WSO2 EI - 无法使用 OAuth 令牌设置 SOAP 标头
问题描述
我在 WSO2 EI 上配置了一个 WSDL 代理服务,它指向一个由 OAuth 保护的外部服务。
我的问题是,除了我所有的努力之外,我无法在我的服务调用上设置承载授权标头。服务端点总是返回“找不到 oauth 令牌”错误。我已经尝试过所有关于标头的 WSO2 教程和文档(使用 Header Mediator 和标头作为属性),但没有任何效果。
我的问题与此类似,也没有答案。
WSDL 代理服务由 WCF .NET 应用程序使用,并且设置了 Bearer 标头。
这是 XML 配置:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="WSDLProxy"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http">
<target>
<inSequence>
<send>
<endpoint>
<wsdl port="RegisterEndpoint"
service="RegisterService.serviceagent"
uri="[external-wsdl-uri]"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="[external-wsdl-uri]"/>
</proxy>
解决方案
在直通场景中,例如给定的 WSDL 代理服务示例,如果在客户端对“WSDLProxy”的请求中发送“Authorization”标头,它将被发送到后端服务。但是,如果您的客户端在自定义传输标头中发送 Bearer 令牌,则必须在后端调用之前将其设置为“授权”标头,如下所示。
...
<inSequence>
<property expression="get-property('transport', 'CUSTOM-Bearer')" name="Authorization" scope="transport" type="STRING"/>
<property action="remove" name="CUSTOM-Bearer" scope="transport"/>
<send>
<endpoint>
<wsdl port="RegisterEndpoint"
service="RegisterService.serviceagent"
uri="[external-wsdl-uri]"/>
</endpoint>
</send>
</inSequence>
...
推荐阅读
- html - Pug-Template 不导入 CSS
- sql - sql 数据库 azure 提供程序:TCP 提供程序,错误:0 - 此主机未知
- java - mule 3.3.2 与 open JDK 1.6 兼容吗?
- database - 如何在 postgresql 中使用 Order by 子句和 union all 限制?
- java - Spring Boot 升级到最新版本
- javascript - ajax回调后初始化变量
- javascript - 如何通过本机反应获取每小时一天的天气数据,OpenWeatherMap API?
- r - ggplot单值因子从图例中删除斜线
- makefile - 即使先决条件没有改变,Makefile 也会构建目标
- python - Python比较数据框内容并在匹配时替换?