In WSO2 ESB, how to store cookies and use them later for authentication?

徘徊边缘 提交于 2019-12-02 21:59:54

问题


I have a service that I am calling, which is returning back cookies with authentication info. How do I store the cookies, and use them later?

This is not working for me. I see the cookies being returned back, but I don't see it getting set.

<!-- LOGON CALL -->
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="setCookieHeader" expression="$trp:cookie"></property>
<payloadFactory media-type="xml">
    <format><somexml></somexml></format>
</payloadFactory>
<call>
    <endpoint>
       <address uri="http://serviceurl.domain.com" format="pox"></address>
    </endpoint>
</call>
<log>
<property name="cookie" expression="get-property('setCookieHeader')"></property>
</log>
<!-- The Above Log statement prints correctly -->

<!-- Second Service CALL -->
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="setCookieHeader" expression="$trp:cookie"></property>
<payloadFactory media-type="xml">
    <format><somexml></somexml></format>
</payloadFactory>
<call>
    <endpoint>
       <address uri="http://serviceurl.domain.com" format="pox"></address>
    </endpoint>
</call>

回答1:


To get cookies from the response :

<property name="setCookieHeader" expression="$trp:Set-Cookie" scope="default" type="STRING"/>

To set cookies for the next request :

<property name="Cookie" expression="$ctx:setCookieHeader" scope="transport"/> <!-- if setCookieHeader has been initialized before -->

Or

<property name="Cookie" expression="$trp:Set-Cookie" scope="transport"/>


来源:https://stackoverflow.com/questions/27788670/in-wso2-esb-how-to-store-cookies-and-use-them-later-for-authentication

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!