<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.19048"></HEAD>
<BODY>
<DIV><SPAN class=003491716-20042011><FONT color=#000080 size=2 
face="Lucida Sans">I'm not an expert on the HTTP/SOAP stuff. But the general 
goal should be to let the container (e.g. tomcat or apache axis) manage as much 
of this stuff as possible. Maybe you can see how people have made authentication 
work elsewhere in the XMLA servlet.</FONT></SPAN></DIV>
<DIV><SPAN class=003491716-20042011><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=003491716-20042011><FONT color=#000080 size=2 
face="Lucida Sans">Julian</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="BORDER-LEFT: #000080 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px" 
dir=ltr>
  <DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
  <HR tabIndex=-1>
  <FONT size=2 face=Tahoma><B>From:</B> Michele Rossi 
  [mailto:michele.rossi@gmail.com] <BR><B>Sent:</B> Wednesday, April 20, 2011 
  8:00 AM<BR><B>To:</B> Mondrian developer mailing list<BR><B>Cc:</B> 
  jhyde@pentaho.com<BR><B>Subject:</B> xmla security header 
  processing<BR></FONT><BR></DIV>
  <DIV></DIV>Hi,
  <DIV><BR></DIV>
  <DIV>I am writing some code to handle the xmla security header:</DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV>&lt;Header&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp;&lt;Security xmlns="<A 
  href="http://schemas.xmlsoap.org/ws/2002/04/secext">http://schemas.xmlsoap.org/ws/2002/04/secext</A>"&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp;&lt;UsernameToken&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp;&lt;Username&gt;MICHELE&lt;/Username&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp;&lt;Password 
  Type="PasswordText"&gt;ROSSI&lt;/Password&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp;&lt;/UsernameToken&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp;&lt;/Security&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp;&lt;BeginSession mustUnderstand="1" 
  xmlns="urn:schemas-microsoft-com:xml-analysis" /&gt;</DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<SPAN 
  style="WHITE-SPACE: pre" class=Apple-tab-span> 
  </SPAN>&lt;/Header&gt;</DIV></DIV>
  <DIV><BR></DIV>
  <DIV>Such header is sent out by XMLA clients such as SimbaO2X (Excel 
  plugin).</DIV>
  <DIV>My idea is to pass user&nbsp;credentials down to the connection manager 
  and use them to create new connections.</DIV>
  <DIV><BR></DIV>
  <DIV>I also think that connections should be associated with sessions.</DIV>
  <DIV>I am thinking of a Map that associates session IDs with OlapConnection 
  objects.</DIV>
  <DIV><BR></DIV>
  <DIV>I can put all this logic directly in DefaultXmlaServlet or (probably) in 
  a "XmlaRequestCallback" class.</DIV>
  <DIV>Which option do we want to go for?</DIV>
  <DIV><BR></DIV>
  <DIV>I also have in mind another more specific bit of functionality: hiding 
  username / password in the session ID returned to the xmla client.</DIV>
  <DIV>This can be useful especially in the case of a server going down and 
  forgetting a particular session id.</DIV>
  <DIV>(Your user leaves Excel open for a couple of days and when he tries to 
  use the Pivot again he gets an error if the server has been bounced in the 
  meantime).</DIV>
  <DIV><BR></DIV>
  <DIV>The other use case could be http load balancers.</DIV>
  <DIV>As Excel does not send any cookies most load balancers would fail to 
  apply the "sticky session" policy and could redirect different xmla requests 
  to different cluster members.</DIV>
  <DIV>Only one of those members would know about the specified session ID (in 
  other words only one of those servers would have an OlapConnection object 
  stored under the given session id) but the others could re-obtain the 
  credentials by de-crypting the session id.</DIV>
  <DIV><BR></DIV>
  <DIV>I can make the encrypted session ID very secure - even to "clear text" 
  attacks.</DIV>
  <DIV>I will discuss the details only if we think it's a feature worth 
  having.</DIV>
  <DIV><BR></DIV>
  <DIV>Michele</DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV></BLOCKQUOTE></BODY></HTML>