wso2 ESB oauthService 故障处理

wso2 ESB oauthService fault handling

我定义了一个简单的 pass-thru API,其中包含 oauthService 以验证访问令牌。类似这样:

<api xmlns="http://ws.apache.org/ns/synapse" name="aservice" context="/aservice/v1">
    <resource methods="POST PUT GET" uri-template="/*" faultSequence="ServiceFault">
        <inSequence>
            <oauthService remoteServiceUrl="https://identityserver:9444/services/" username="admin" password="admin" description="oauth2"/>
            <send>
                <endpoint name="aservice-endpoint">
                    <address uri="http://aservice:8080/aservice/v1"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </resource>
</api>

它包括一个 ServiceFault 将一般消息发送回客户端。

我的问题是,是否可以有一个单独的故障处理程序来处理来自 oauthService 的验证错误?我也想处理来自地址端点的错误(即主机关闭等)。调用所有这些都在一个故障序列定义中处理?

我希望能够根据错误是 oauth2 错误还是其他错误类型设置不同的 HTTP 响应代码和 headers。

有一种方法可以通过使用单独的序列来实现。您可以将 oauthService 放在一个单独的序列中,然后在标签 onError:

中有自己的 faultSequence
<api xmlns="http://ws.apache.org/ns/synapse" name="aservice" context="/aservice/v1">
<resource methods="POST PUT GET" uri-template="/*" faultSequence="ServiceFault">
    <inSequence>
        <sequence key="oauthSequence"/>
        <send>
            <endpoint name="aservice-endpoint">
                <address uri="http://aservice:8080/aservice/v1"/>
            </endpoint>
        </send>
    </inSequence>
    <outSequence>
        <send/>
    </outSequence>
</resource>
</api>

<sequence xmlns="http://ws.apache.org/ns/synapse" name="oauthSequence" onError="myOauthFaultSequence">
   <oauthService remoteServiceUrl="https://identityserver:9444/services/" username="admin" password="admin" description="oauth2"/>
</sequence>

查看Sequence的onError描述:https://docs.wso2.com/display/ESB481/Mediation+Sequences