wso2esb身份验证服务异常
您好,我已将wso2esb 4.7.0升级到wso2esb 4.8.0 我有一个登录服务,可以验证用户名和密码,并返回true或false。它在4.7.0版本中运行良好,但在4.8.0版本中不起作用 当从任何其他代理在内部调用此服务时,它将为该代理的有效用户返回true,但当我直接调用它时,它将返回me null并在esb中抛出错误,如下所示wso2esb身份验证服务异常,wso2,axis2,wso2esb,wso2is,wso2carbon,Wso2,Axis2,Wso2esb,Wso2is,Wso2carbon,您好,我已将wso2esb 4.7.0升级到wso2esb 4.8.0 我有一个登录服务,可以验证用户名和密码,并返回true或false。它在4.7.0版本中运行良好,但在4.8.0版本中不起作用 当从任何其他代理在内部调用此服务时,它将为该代理的有效用户返回true,但当我直接调用它时,它将返回me null并在esb中抛出错误,如下所示 ERROR {org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught
ERROR {org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught exception {org.apache.axis2.transport.base.threads.NativeWorkerPool}
java.lang.ClassCastException: org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to org.apache.axiom.soap.SOAPFault
at org.apache.axiom.soap.impl.llom.SOAPBodyImpl.getFault(SOAPBodyImpl.java:120)
at org.apache.synapse.util.POXUtils.convertSOAPFaultToPOX(POXUtils.java:46)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:93)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:321)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:94)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:160)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:261)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:486)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
我使用curl直接执行
curl -v -H "Accept: application/json" -H "Content-Type:application/json" -d '{"username":"vikash|214057357158656","password":"gbadmin"}' http://redmine.youtility.in:8282/services/ServiceLogin2.0
axix2.xml消息格式化程序和生成器
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONMessageFormatter"/>
<messageFormatter contentType="application/json/badgerfish"
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
<messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONBuilder"/>
<messageBuilder contentType="application/json/badgerfish"
class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
代理
$1
$2
$3
101500,101501,101506,101507,101508,101503,50000
30
1
300
顺序:
<sequence xmlns="http://ws.apache.org/ns/synapse"
name="ServiceLogin_Seq2.0"
onError="fault" statistics="enable">
<property name="messageType" value="application/json" scope="axis2"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<property name="HTTP_METHOD" value="POST" scope="axis2"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd"
xmlns:p="http://authentication.services.core.carbon.wso2.org"
name="Return"
expression="//p:return/text()"
scope="default"
type="STRING"/>
<filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('Return')=''">
<then>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Authentication>$1</Authentication>
<Exception>Service trying to connect inactive service</Exception>
<Status>101503</Status>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</then>
<else>
<filter xpath="get-property('Return')='false'">
<then>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Authentication>$1</Authentication>
<Exception>Authentication Failed</Exception>
<Status>401</Status>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</then>
<else>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Body>
<Datalist>
<Authentication>$1</Authentication>
</Datalist>
</Body>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</else>
</filter>
</else>
</filter>
<log level="custom">
<property name="LogLocation" value="ServiceLogin_Seq2.0"/>
<property name="Usercode" expression="get-property('usercode')"/>
<property name="Clientid" expression="get-property('clientid')"/>
<property name="requestMsgId" expression="get-property('requestMsgId')"/>
<property name="responseMsgId" expression="get-property('MessageID')"/>
</log>
</sequence>
$1
服务正在尝试连接非活动服务
101503
$1
身份验证失败
401
$1
在此处连接您的synapse。Hi-Ushani请参考连接的synapse。实际上,这来自soap消息SOAPAction:,MessageID:urn:uuid:69df6336-15d6-46d1-bbd6-bd969d82e51a,方向:响应,信封:当后端服务响应正常时,您能否捕获后端服务请求/响应,要模拟并尝试您的场景,请在此处连接您的synapse。嗨,Ushani,请参考连接的synapse。实际上,这来自soap消息SOAPAction:,MessageID:urn:uuid:69df6336-15d6-46d1-bbd6-bd969d82e51a,方向:响应,信封:当后端服务响应正常时,您能否捕获后端服务请求/响应,要模拟它并尝试您的场景??
<sequence xmlns="http://ws.apache.org/ns/synapse"
name="ServiceLogin_Seq2.0"
onError="fault" statistics="enable">
<property name="messageType" value="application/json" scope="axis2"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<property name="HTTP_METHOD" value="POST" scope="axis2"/>
<property name="RESPONSE" value="true" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd"
xmlns:p="http://authentication.services.core.carbon.wso2.org"
name="Return"
expression="//p:return/text()"
scope="default"
type="STRING"/>
<filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('Return')=''">
<then>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Authentication>$1</Authentication>
<Exception>Service trying to connect inactive service</Exception>
<Status>101503</Status>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</then>
<else>
<filter xpath="get-property('Return')='false'">
<then>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Authentication>$1</Authentication>
<Exception>Authentication Failed</Exception>
<Status>401</Status>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</then>
<else>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Body>
<Datalist>
<Authentication>$1</Authentication>
</Datalist>
</Body>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Return')"/>
</args>
</payloadFactory>
<send/>
</else>
</filter>
</else>
</filter>
<log level="custom">
<property name="LogLocation" value="ServiceLogin_Seq2.0"/>
<property name="Usercode" expression="get-property('usercode')"/>
<property name="Clientid" expression="get-property('clientid')"/>
<property name="requestMsgId" expression="get-property('requestMsgId')"/>
<property name="responseMsgId" expression="get-property('MessageID')"/>
</log>
</sequence>