Hi richard,
I followed your suggestion and i rewrote my Spnego filter in this way :

public class XXXSpnegoHttpFilter extends AbstractMgnlFilter{
        
        protected XXXHttpFilter wrappedFilter = null;
        
        public void init(XXXFilterConfig config) throws ServletException{
                super.init(config);
                this.wrappedFilter = new SpnegoHttpFilter();
                this.wrappedFilter.init(config);
        }
        
        public void doFilter(HttpServletRequest request, HttpServletResponse 
response, FilterChain chain) throws IOException, ServletException {
                
                init(new XXXFilterConfig());
                wrappedFilter.doFilter(request, response, chain);
                destroy();
                
        }
        
        public void destroy(){
                
                if (wrappedFilter!=null) {
                        wrappedFilter.destroy();
                }
                wrappedFilter = null;
    }
                
}
        
And I insert init() and destroy() in the followed filter I rewrote called 
XXXLoginFilter :

package info.magnolia.module.authentication;

//Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
//Jad home page: http://www.kpdus.com/jad.html
//Decompiler options: packimports(3) 
//Source File Name:   LoginFilter.java


import info.magnolia.audit.AuditLoggingUtil;
import info.magnolia.cms.filters.AbstractMgnlFilter;
import info.magnolia.cms.security.auth.login.LoginFilter;
import info.magnolia.cms.security.auth.login.LoginHandler;
import info.magnolia.cms.security.auth.login.LoginResult;
import info.magnolia.context.Context;
import info.magnolia.context.MgnlContext;
import info.magnolia.monitoring.AccessRestrictedException;
import info.magnolia.monitoring.SystemMonitor;
import info.magnolia.objectfactory.Components;

import java.io.IOException;
import java.util.*;

import javax.security.auth.Subject;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import net.sourceforge.spnego.SpnegoHttpFilter;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

//Referenced classes of package info.magnolia.cms.security.auth.login:
//         LoginHandler, LoginResult

public class XXXLoginFilter extends AbstractMgnlFilter
{
 
 protected SpnegoHttpFilter wrappedFilter = null;
 public XXXLoginFilter()
 {
     loginHandlers = new ArrayList();
 }

 public void doFilter(HttpServletRequest request, HttpServletResponse response, 
FilterChain chain) throws IOException, ServletException {
         init(new XXXFilterConfig());
    
     for( Iterator<LoginHandler> iter = 
getLoginHandlers().iterator();iter.hasNext(); )  {
                
                 LoginHandler handler = iter.next() ;
                
         LoginResult loginResult = handler.handle(request, response);
         LoginResult.setCurrentLoginResult(loginResult);
         AuditLoggingUtil.log(loginResult, request);
        
         if(loginResult.getStatus() == 4)
             return;
         if(loginResult.getStatus() == 1)
         {
             
if(((SystemMonitor)Components.getComponent(info.magnolia.monitoring.SystemMonitor.class)).isMemoryLimitReached())
             {
                 String memoryLimitReachedMessage = String.format("Your server 
is currently low on memory. %s. Please try again later or contact your 
administrator if this happens frequently.", new Object[] {
                     "That is why further logins have to be blocked for now."
                 });
                 log.error(memoryLimitReachedMessage);
                 LoginResult.setCurrentLoginResult(new LoginResult(2, new 
AccessRestrictedException()));
             } else
             {
                 Subject subject = loginResult.getSubject();
                 if(subject == null)
                 {
                     log.error((new StringBuilder()).append("Invalid login 
result from handler [").append(handler.getClass().getName()).append("] returned 
STATUS_SUCCEEDED but no subject").toString());
                     throw new ServletException("Invalid login result");
                 }
                 if(request.getSession(false) != null)
                     request.getSession().invalidate();
                 MgnlContext.login(subject);
                 
                 /* my code*/
                 }
                 AuditLoggingUtil.log(loginResult, request);
             }
         }
         AuditLoggingUtil.log(loginResult, request);
     } 

     chain.doFilter(request, response);
     destroy();
 }

 public Collection getLoginHandlers()
 {
     return loginHandlers;
 }

 public void setLoginHandlers(Collection loginHandlers)
 {
     this.loginHandlers = loginHandlers;
 }

 public void addLoginHandlers(LoginHandler handler)
 {
     loginHandlers.add(handler);
 }

 private static final Logger log = 
LoggerFactory.getLogger(info.magnolia.cms.security.auth.login.LoginFilter.class);
 private Collection loginHandlers;
 
 public void init(UniqaFilterConfig config) throws ServletException{
         super.init(config);
         this.wrappedFilter = new SpnegoHttpFilter();
         this.wrappedFilter.init(config);
 }
 
 public void destroy(){
         if (wrappedFilter!=null){
                 wrappedFilter.destroy(); 
         }
         
         wrappedFilter = null;
 }

}

and I obtain this exception probabilty because I couldn't understand very well 
the way:

java.lang.NullPointerException
        at 
net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:229)
        at 
info.magnolia.module.authentication.UniqaSpnegoHttpFilter.doFilter(UniqaSpnegoHttpFilter.java:33)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
        at 
info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:56)
        at 
info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:91)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:85)
        at 
info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:91)
        at 
info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:61)
        at 
info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:83)

Can you help me please?

Thank you in advance

Regards from Milan

Alberto Giovannone

-- 
Context is everything: 
http://forum.magnolia-cms.com/forum/thread.html?threadId=be26f4c1-1b80-42bc-8de0-c51be72a9127


----------------------------------------------------------------
For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to