如何在 micro integrator 4.1 中使用 wso2 OAuth mediator

how use wso2 OAuth mediator in micro integrator 4.1

我不知道如何使用 wso2 OAuth 调解器。我使用 wso2 微型集成器 4.1、身份服务器 5.11 和 wso2 IntegrationStudio 8.1。

  1. 这是真的吗:OAuth 调解器获取访问令牌并将其发送到身份服务器并在访问令牌是否有效时获得答案?

  2. 我们应该在 inSequence 的开头添加一个 OAuth 中介吗?

  3. OAuth 调解器之后应该是什么?

  4. 使用 OAuth 调解器时,curl 消息是什么样的?

我有一个这样的 API(没有 OAuth 调解器):

<api context="/user-service3" name="Soap2Rest" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST">
    <inSequence>
        <send>
            <endpoint>
                <http method="post" uri-template="http://localhost:9090/user-service" />
            </endpoint>
        </send>
    </inSequence>
    <outSequence>
        <send/>
    </outSequence>
    <faultSequence>
        <send/>
    </faultSequence>
</resource>

我发送这样的 curl 消息:

curl -X 'POST' -k 'https://localhost:8253/user-service3' \
-H 'Content-Type: application/soap+xml' \
-H 'accept: */*' \
-d '
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:user="http://user.ws.xx.com/">
   <soap:Header/>
   <soap:Body>
      <user:createUser>
         <arg0>abc</arg0>
       </user:createUser>
    </soap:Body>
 </soap:Envelope>'

在 inSequence 开头添加 OAuth 中介后,我应该在 curl 命令中更改什么?

<oauthService remoteServiceUrl="https://testdomain.org:9444/services/" username="admin" password="admin"/> -->

我尝试了不同的方法,但从 wso2 身份服务器收到错误。 我将授权 header 添加到 curl.

-H 'Authorization : Bearer 8aa447a9-b929-355c-a885-1b92c5266051' \

但是 Micro Integrator 显示此日志:

INFO {LogMediator} - Direction: request, MESSAGE = Executing default 'fault' sequence, 
ERROR_CODE = 0, ERROR_MESSAGE = Error occured while validating oauth 2.0 access token, 
Envelope: 
<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:user="http://user.ws.xx.com/">
<soap:Body>
  <user:createUser>
     <arg0>abc</arg0>
  </user:createUser>
 </soap:Body></soap:Envelope>
  1. 它可以在任何地方
  2. 任何东西
  3. 为 curl 添加授权 header。

curl 命令正确。基于this answer我发现一些wso2产品的org.wso2.carbon.identity.oauth.stub jar文件彼此不兼容。我想也许是我的问题。

我将 org.wso2.carbon.identity.oauth.stub_6.4.111.jar 文件从 WSO2 身份服务器复制到 WSO2 微型集成器的 wso2/components/plugins 目录。

cp wso2is-5.11.0/repository/components/plugins/org.wso2.carbon.identity.oauth.stub_6.4.111.jar wso2mi-4.1.0/wso2/components/plugins

然后更新了微积分器的bundles.info文件:

vi wso2mi-4.1.0/wso2/components/micro-integrator-default/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info

修改了这一行:

org.wso2.carbon.identity.oauth.stub,6.1.0,../plugins/org.wso2.carbon.identity.oauth.stub_6.1.0.jar,4,true

对此:

org.wso2.carbon.identity.oauth.stub,6.4.111,../plugins/org.wso2.carbon.identity.oauth.stub_6.4.111.jar,4,true

重启 micro integrator 服务器后,我的 curl 命令工作正常。