我正在使用WSO2 EI 6.3.0和WSO2 Developer Studio 3.8.0。
我正在处理一个ESB项目和其中的代理服务。
代理服务是一种简单的传递服务; 它收到来自Webapp的请求,并将其转发到 Soap Web服务,从WS获得响应并给出 并返回到网络应用。
我在完成本教程后意识到了这种配置:
https://youtu.be/3OsuGhEMQgc
设置非常简单,一切正常,直到我发现 端点具有http基本认证的Web服务。
多亏了这篇文章,我才得以成功:
https://medium.com/@Jenananthan/wso2-esb-how-to-invoke-basic-auth-protected-endpoint-service-5bcdd8290cb4
下面是描述代理服务的xml:
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="ProxyWithBasicAuth" startOnLoad="true" trace="disable" transports="https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<endpoint name="endpoint_urn_uuid_xxxxxxxx-yyyy-zzzz-1111-234567892345">
<address trace="disable" uri="https://here.goes.the.uri.of.the.ws.endpoint"/>
</endpoint>
<inSequence>
<property value="this_is_the_username" name="username" scope="default" type="STRING"/>
<property value="this_is_the_password" name="password" scope="default" type="STRING"/>
<property expression="fn:concat($ctx:username,':',$ctx:password)" name="credentials" scope="default" type="STRING"/>
<property expression="fn:concat('Basic ', base64Encode($ctx:credentials))" name="Authorization" scope="transport" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
因此,此配置(xml文件)正常工作,但是我写了所有 在不使用gui的任何可视元素或拖放元素的情况下启用基本身份验证的部分。
我的问题是:
1)这是在代理服务上设置基本身份验证的正确方法吗?
2)是否有任何gui(拖放)元素可以直观地进行此设置?
注意:我不需要在之间进行基本身份验证 “客户”和ESB代理服务;这个问题是关于基本的 ESB代理服务和“外部” Web服务之间的身份验证。
答案 0 :(得分:3)
您所做的是正确的。要调用受基本身份验证保护的服务,我们只需将授权标头设置为消息。您可以使用Header Mediator [1]或Property介体(已经使用过)来执行此操作。没有专门用于设置授权标头的特殊介体(或工具中的GUI元素)。
顺便说一句,您可以考虑将密码存储在secure-vault [2]中,而不是在Synapse配置中以纯文本格式存储。
[1] https://docs.wso2.com/display/EI640/Header+Mediator [2] https://docs.wso2.com/display/EI640/Working+with+Passwords+in+the+ESB+profile