I was gonna give up and cry like a baby . But your offer of help is to good to be true and I think I'll take your help. THANK YOU!!! Here is the sequence of events. Step 1 : HTTP call made to partner site. I pass userid and a token to partner firm via url. http://www.partnerfirm.com?userid=#userid#&token=#token# Step 2 : Partner send back the same userid and token to a url on my site. This is when the partners session starts. This is the session I need to keep alive and respond back with this same session. Step 3: I run query against the userid to make sure user is real. If so I then pass this xml back to the partner firm via the cfthhp tag. <Response><Header><Status>1</Status></Header></Response> When partner gets this xml back they redirect user to a page in the site. Partner assures me that I am getting back to his server but that I didnt keep session so i got declined. But I'm not 100% sure that the xml is correct. I might need to add < ?xml version="1.0" encoding="utf-8"?> to the top of the xml See what you think. Here is my code <!----------- This is the code from Ben Nadel that captures the JSESSIONID -----------> <cffunction name="GetResponseCookies" access="public" returntype="struct" output="false"> <cfargument name="Response" type="struct" required="true" /> <cfset var LOCAL = StructNew() /> <cfset LOCAL.Cookies = StructNew() /> <cfif NOT StructKeyExists(ARGUMENTS.Response.ResponseHeader,"Set-Cookie")> <cfreturn LOCAL.Cookies /> </cfif> <cfset LOCAL.ReturnedCookies = ARGUMENTS.Response.ResponseHeader[ "Set-Cookie" ] /> <cfloop item="LOCAL.CookieIndex" collection="#LOCAL.ReturnedCookies#"> <cfset LOCAL.CookieString = LOCAL.ReturnedCookies[ LOCAL.CookieIndex ] /> <cfloop index="LOCAL.Index" from="1" to="#ListLen( LOCAL.CookieString, ';' )#" step="1"> <!--- Get the name-value pair. ---> <cfset LOCAL.Pair = ListGetAt( LOCAL.CookieString, LOCAL.Index, ";") /> <cfset LOCAL.Name = ListFirst( LOCAL.Pair, "=" ) /> <cfif (ListLen( LOCAL.Pair, "=" ) GT 1)> <cfset LOCAL.Value = ListRest( LOCAL.Pair, "=" ) /> <cfelse> <cfset LOCAL.Value = "" /> </cfif> <cfif (LOCAL.Index EQ 1)> <cfset LOCAL.Cookies[ LOCAL.Name ] = StructNew() /> <cfset LOCAL.Cookie = LOCAL.Cookies[ LOCAL.Name ] /> <cfset LOCAL.Cookie.Value = LOCAL.Value /> <cfset LOCAL.Cookie.Attributes = StructNew() /> <cfelse> <cfset LOCAL.Cookie.Attributes[ LOCAL.Name ] = LOCAL.Value /> </cfif> </cfloop> </cfloop> <cfreturn LOCAL.Cookies /> </cffunction> <!----------- This ends the code from Ben Nadel that captures the JSESSIONID -----------> <!--- Extracts the text of named XML elements and returns it in a list. ---> <cffunction name="xmlExtractList" returnType="string" output="no"> <cfargument name="inString" type="any"> <cfargument name="tagName" type="string"> <cfargument name="delim" default=","> <cfset var inXML = ""> <cfset var elementsArray = ""> <cfset var valuesArray = arrayNew(1)> <cfset var i=1> <cfset var j=1> <cfset var ret = ""> <cfif isXmlDoc(arguments.inString)> <cfset inXML = arguments.inString> <cfelse> <cfset inXML = xmlParse(arguments.inString)> </cfif> <cfset elementsArray = xmlSearch(inXML, "//" & arguments.tagName)> <cfloop index="j" from="1" to="#arrayLen(elementsArray)#"> <cfif elementsArray .xmlText neq ""> <cfset valuesArray = elementsArray .xmlText> <cfset i=i+1> </cfif> </cfloop> <cfset ret = arrayToList(valuesArray, arguments.delim)> <cfreturn ret> </cffunction> <!--- Extracts the text of named XML elements and returns it in a list. ---> <!----------- This is my code to extract the values from partners xml ---------> <cfset soapData = GetHttpRequestData()> <cfsavecontent variable="soapContent"> <cfoutput> #toString(soapData.content)# </cfoutput> </cfsavecontent> <cfoutput>#soapContent#</cfoutput> <cfset myString = "#soapContent#" /> <cfset useridfrompartnerfirm =#xmlExtractList(soapContent, "UserId")#/> <cfset tokenfrompartnerfirm =#xmlExtractList(soapContent, "Token")#/> <!----------- This ENDS my code to extract the values from partners xml ---------> <!----------- This is where I run the query to validate the userid pased to me ---------> <CFQUERY name="Get_User" datasource="#request.dsn#"> SELECT * FROM users WHERE username = '#useridfrompartnerfirm#' </CFQUERY> <!----------- This ENDS where I run the query to validate the userid pased to me--------> <!----------- This is where I set the xml to be sent back to partner with CFSET tag ---------> <cfset xml_to_partnerfirm = "<Response><Header><Status>1</Status></Header></Response>" /> <!----------- This ENDS here I set the xml to be sent back to partner with CFSET tag ---------> <!----------- If there is a match the user is authenticated and I pass back the xml back to partner via cfhttp ---------> <cfif Get_User.recordcount EQ 1> <cfsavecontent variable="xml_to_partnerfirm"> <Response> <Header> <Status>1</Status> </Header> </Response> </cfsavecontent> <cfhttp url="https://uat.partnerfirm.com/secure/sso/pk_request.jsp" method="Post" > <cfhttpparam type="xml" name="XMLUpload" value="#xml_to_partnerfirm#"> <cfhttpparam type="cookie" name="JSESSIONID" value="#respCookies.JSESSIONID#" /> </cfhttp> </cfif>
... View more