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
我定义了一个简单的 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
:
<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