Ok i found out what was going wrong. I used the sun package to encode "new sun.misc.BASE64Encoder().encodeBuffer(msg1)" I replaced it with a class I got from http://iharder.net/base64 and it works fine now. I did not know sun.* apis are not supposed to be used....
dgv123 wrote: > > I am attaching a WAR file which uses code to obtain the user id via NTLM. > This code works fine on Tomcat and Weblogic 9.2 on unix (if i do not use > <s:form/> in the Home.jsp - I do not know why that breaks > http://www.nabble.com/file/p16032835/NTLM1.war NTLM1.war ) > > This WAR does not work on Weblogic 9.2 Windows 2000 as i get the following > error > Header:WWW-Authenticate Cannot contain CRLF Charcters > > Here is the code in the Action class. > ******************************************* > package com.dgv.actions; > > import java.util.Map; > > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > > import org.apache.struts2.interceptor.ServletRequestAware; > import org.apache.struts2.interceptor.ServletResponseAware; > import org.apache.struts2.interceptor.SessionAware; > > import com.dgv.security.NTLMLogin; > import com.dgv.util.Util; > import com.opensymphony.xwork2.ActionSupport; > import com.opensymphony.xwork2.Preparable; > > public class BaseAction extends ActionSupport > implements SessionAware, ServletRequestAware, ServletResponseAware, > Preparable{ > > private Map session; > private HttpServletRequest request; > private HttpServletResponse response; > > public void setSession(Map arg0) { > this.session = arg0; > } > > > > public void setServletRequest(HttpServletRequest arg0) { > // TODO Auto-generated method stub > this.request = arg0; > } > public HttpServletRequest getServletRequest() { > // TODO Auto-generated method stub > return request; > } > > > > public void prepare() throws Exception { > > System.out.println("Entered Prepare Method"); > String auth = request.getHeader("Authorization"); > if (auth == null) { > System.out.println("Inside Null"); > response.setStatus(response.SC_UNAUTHORIZED); > response.setHeader("WWW-Authenticate", "NTLM"); > return; > } > System.out.println("outside Null"); > if (auth.startsWith("NTLM ")) { > byte[] msg = new > sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5)); > int off = 30, length=0, offset; > String s; > > if (msg[8] == 1) { // first step of authentication > off = 18; > > // this part is for full hand-shaking, just tested, didn't care > about > result passwords > byte z = 0; > byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M', > (byte)'S', > (byte)'S', (byte)'P', z, > (byte)2, z, z, z, z, z, z, z, > (byte)40, z, z, z, (byte)1, (byte)130, z, z, > z, (byte)2, (byte)2, (byte)2, z, z, z, z, // this line is > 'nonce' > z, z, z, z, z, z, z, z}; > // remove next lines if you want see the result of first step > response.setStatus(response.SC_UNAUTHORIZED); > System.out.println("Before Setting Header"); > response.setHeader("WWW-Authenticate", "NTLM " + new > sun.misc.BASE64Encoder().encodeBuffer(msg1)); > System.out.println("Header:"+ > request.getHeader("WWW-Authenticate")); > return; > > > } else > //return; > > > length = msg[off+9]*256 + msg[off+8]; > offset = msg[off+11]*256 + msg[off+10]; > s = new String(msg, offset, length); > System.out.println("**USER**** "+s + ""); > } > > } > public void setServletResponse(HttpServletResponse arg0) { > this.response = arg0; > > } > > > > public HttpServletResponse getServletResponse() { > return response; > } > > } > > > > ********************************************** > Any help would be greatly appreciated. > -- View this message in context: http://www.nabble.com/Struts-2-Weblogic-and-NTLM-tp16032835p16037640.html Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]