如何使用由OAuth保护的web服务?
我对WSO2 esb非常陌生,我仍在评估它。我正在尝试使用由OAuth保护的web服务。在我的序列中,我创建了一个中介OAuth,如下所示:如何使用由OAuth保护的web服务?,oauth,wso2,wso2esb,Oauth,Wso2,Wso2esb,我对WSO2 esb非常陌生,我仍在评估它。我正在尝试使用由OAuth保护的web服务。在我的序列中,我创建了一个中介OAuth,如下所示: <?xml version="1.0" encoding="UTF-8"?> <sequence name="test-consume-oauth_v1" xmlns="http://ws.apache.org/ns/synapse"> <in> <property expression="
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="test-consume-oauth_v1" xmlns="http://ws.apache.org/ns/synapse">
<in>
<property expression="json-eval($.)" name="test-consume-oauth_v1 Body_received" scope="default" type="STRING" />
<oauthService xmlns="http://ws.apache.org/ns/synapse" password="xxx"
remoteServiceUrl="https://myserver.com/token" username="xxx"/>
<call>
<endpoint key="test_OAUTH_v1"/>
</call>
<script language="js"><![CDATA[var srvResponse = mc.getPayloadJSON();
mc.setProperty('srvResponse', srvResponse);]]></script>
<log>
<property expression="json-eval($.)" name="test-consume-oauth_v1 response "/>
</log>
<script language="js"><![CDATA[var log = mc.getServiceLog();
mc.setPayloadJSON(mc.getProperty('srvResponse'));
]]></script>
<respond />
</in>
<out>
<send />
<drop />
</out>
</sequence>
总结一下我如何在Wso2 esb中像cURL命令行一样执行相同的操作
致以最诚挚的问候我这样使用mediator标题
<header name="Authorization" scope="transport" value="3ef47ff9ae9f0600aa27efd6565" />
<call>
<endpoint key="test_OAUTH_v1"/>
</call>
....
....
这很好用。但问题是令牌的生存期很短,因此我必须存储当前令牌,如果它无效,我必须请求一个新的有效令牌。我认为wso2esb可以完成这个过程,但我不知道如何处理
您有什么建议吗?oauth中介用于使用oauth保护不安全的后端。在您的情况下,您的后端已经由oauth保护,您需要通过提供oauth令牌通过esb调用该后端。您需要使用密码授权类型动态生成oauth令牌,并使用它调用后端。因此,您可以按照以下步骤来实现这一点
/>
/>
$1
$2
$3
启用wirelogs并检查来自ESB的请求是否正确。您能否将向ESB发出的请求(正文、http头)发布到问题中?根据错误,它表示不是有效的oauth请求,请确保您发送oauth令牌头'Authorization:Bearer xxxxx's。我尝试了您的代码,但它不起作用
curl -X GET --header "Accept: application/json" --header "Authorization: Bearer 3ef47ff9ae9f0600aa279a0f77ddfdf" "https://myserver.com/ws-test" -k
<header name="Authorization" scope="transport" value="3ef47ff9ae9f0600aa27efd6565" />
<call>
<endpoint key="test_OAUTH_v1"/>
</call>
....