Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WSO2应用服务器上的web服务中从UsernameToken场景检索用户名_Wso2_Axis2_Wso2esb_Rampart - Fatal编程技术网

在WSO2应用服务器上的web服务中从UsernameToken场景检索用户名

在WSO2应用服务器上的web服务中从UsernameToken场景检索用户名,wso2,axis2,wso2esb,rampart,Wso2,Axis2,Wso2esb,Rampart,我有一个基于WSO2 ESB WSDL的代理服务,它由UsernameToken场景保护。此包装器服务用于在WSO2应用程序服务器中作为.aar文件部署的Axis2后端web服务。我想要的是在后端服务中检索用于身份验证的用户名 我尝试使用下面的Java代码获取用户名,但它总是返回NULL: MessageContext msgContext = MessageContext.getCurrentMessageContext(); String username = (String)msgCon

我有一个基于WSO2 ESB WSDL的代理服务,它由UsernameToken场景保护。此包装器服务用于在WSO2应用程序服务器中作为.aar文件部署的Axis2后端web服务。我想要的是在后端服务中检索用于身份验证的用户名

我尝试使用下面的Java代码获取用户名,但它总是返回
NULL

MessageContext msgContext = MessageContext.getCurrentMessageContext(); 
String username = (String)msgContext.getProperty(RampartMessageData.USERNAME);
似乎
MessageContext
没有存储Rampart消息数据。是否可以在WSO2 ESB中设置任何内容,以便将该用户名传递给消息上下文中的后端服务


谢谢大家!

我想,您已经编写了一个类中介来从消息上下文检索用户名。请注意,用户名不在synapse消息上下文中。它位于axis2消息上下文中。请尝试使用以下代码。。在你的调解人的内部。它一直在为我工作

        Axis2MessageContext axis2Msgcontext = (Axis2MessageContext) synCtx;
    org.apache.axis2.context.MessageContext msgContext = axis2Msgcontext.getAxis2MessageContext();
    String userName = (String) msgContext.getProperty("username");
或者,是否要在BE服务(内部AS)中检索用户名?然后,您需要将用户名发送到服务。您可以使用HTTP标头或任何其他方法将用户名发送到BE服务。然后可以使用Axis2处理程序检索它。例如,您可以使用WSO2ESB中的synapse配置将用户名设置为HTTP头,如下所示。然后将头值传递给服务

 <header name="UserName" value="Test" />


谢谢您的回答!我使用了您的第二个建议,因为我需要部署在WSO2上的后端服务中的用户名。对于其他可能需要此用户名的人:在WSO2 ESB代理服务的
插入序列中,我添加了
,在后端Axis2服务中,我使用
字符串username=MessageContext.getCurrentMessageContext().getEnvelope检索它().getHeader().getFirstChildWithName(新的QName()http://example.com“,”用户名“,”abc“)。getText();