如何在WSO2 API Manager中使用身份验证公开SOAP Web服务

时间:2015-07-08 06:33:15

标签: web-services curl soap wso2 wso2-am

我有一个SOAP Web服务,我可以使用下面的命令进行API调用。它工作正常。

curl --user test:test123 --header "Content-Type: text/xml;charset=UTF-8" --data @checkPayment.xml http://192.168.100.10:8081/asywspay/WSDeclarationPayment

上面提到的SOAP服务通过WSO2 API Manager 1.6公开,终点是http://api.store.com:8280/WSDeclarationPayment/1.0.然后我使用下面的命令进行API调用。

curl --user test:test123 --header "Content-Type: text/xml;charset=UTF-8" --header "Authorization: Bearer 7bcc2235a6b0bebfbf4ff684f59f97a7" --data @checkPayment.xml http://api.store.com:8280/WSDeclarationPayment/1.0

它给了我错误This request requires HTTP authentication。即使我通过curl使用--user test:test123传递凭据,它也不会通过API管理器传递。

鉴于这也是这样尝试的。

curl --header "Content-Type: text/xml;charset=UTF-8" --header "Authorization: Bearer 7bcc2235a6b0bebfbf4ff684f59f97a7" --header "Authorization: Basic dGVzdDp0ZXN0MTIz" --data @checkPayment.xml http://api.store.com:8280/WSDeclarationPayment/1.0

然后我收到错误<faultcode>S:Client</faultcode><faultstring>Cannot find dispatch method for {

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您有一个安全的后端SOAP服务,需要通过API Manager公开。当您创建API时,在“端点”部分下,您必须单击Show More Options,您必须选择Secured作为Endpoint Security Scheme,然后您可以在那里提供后端服务凭据,如图所示在下图中。当API Manager调用后端服务时,将使用这些凭据。现在我们已将API Manager配置为与安全后端进行通信。

enter image description here

然后,您必须在API Store中创建一个Application,将该应用程序订阅到API,生成访问令牌,最后在调用API时必须使用这些访问令牌。这整个流程在这里有很好的记录[a]。请仔细阅读。如果您想在没有访问令牌的情况下调用API,则可以在创建API时将Auth Type设置为None以获取API资源。

[a] https://docs.wso2acom/display/AM160/Application+Developer+Guide