SecurityContextHolder.getContext() NULL

Boa Tarde,

Bom, eu tenho um método que de login chamado logar, nele possui um if:

  if (authentication instanceof Authentication) {

ao clickar em logar ele não passa desse if e então não continua mais a verificação do login.
Eu acredito que é porque não esta sendo instanciando porem não sei como arrumar isso.

logo abaixo todo o método de login:

 public String logar() throws ServletException, IOException {
        System.out.println("METODO LOGAR");
        try {
            ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
            RequestDispatcher dispatcher = ((HttpServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
            dispatcher.forward((HttpServletRequest) context.getRequest(), (HttpServletResponse) context.getResponse());
            FacesContext.getCurrentInstance().responseComplete();
            SecurityContext contextSpring = SecurityContextHolder.getContext();
            User user = null;
            
            if (contextSpring instanceof SecurityContext) {
                Authentication authentication = contextSpring.getAuthentication();
                System.out.println("ContexSpring isntaceado");
                if (authentication instanceof Authentication) {
                    System.out.println("autentication instaceado");
                    user = (User) authentication.getPrincipal();

                    HttpSession session = (HttpSession) context.getSession(false);
                    session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
                    Usuario usu = (Usuario) session.getAttribute("usuarioLogado");
                    usuario = usu;
                    unidade = usuario.getUnidade();;
//    id_cidade = usu.getCidade();
//    id_funcao = usu.getFuncao();
                    verificarSenha(user.getPassword(), usu.getUsername());

                }
            }
        } catch (Exception ex) {
            FacesUtil.exibirMensagemErro(ex.getMessage());
        }



        return null;
    }

Agradeço muito sua ajuda obrigado.

Nesta linha:

 Authentication authentication = contextSpring.getAuthentication();  

o método contextSpring.getAuthentication(); pode estar retornando null fazendo
com que a referência authentication não passe no teste instanceof.

Opa, muito obrigado pela sua resposta mais não tenho ideia de como arrumaria isso, como arrumo poderia me dar uma luz?

Não entenod o porque, será que o spring esta enviando dados para bean?

Em que parte da aplicação você está fazendo a chamada a SecurityContextHolder.getContext()?
Se este for chamado durante uma invocação na qual não há Filters aplicados, pode-se ter a impressão
que o SecurityContext está sendo retornado(já que SecurityContextHolder.getContext() sempre retorna um context)
mas na verdade não tem nada e você não consegue pegar a Authentication

O SecurityContext contextSpring = SecurityContextHolder.getContext(); esta logo no codigo abaixo:

public String logar() throws ServletException, IOException {
try {
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
RequestDispatcher dispatcher = ((HttpServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
dispatcher.forward((HttpServletRequest) context.getRequest(), (HttpServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
SecurityContext contextSpring = SecurityContextHolder.getContext();
User user = null;
if (contextSpring instanceof SecurityContext) {
Authentication authentication = contextSpring.getAuthentication();
System.out.println(“TESTE”);

            // NÃO PASSA NA VERIFICAÇÃO PORQUE:
            //Authentication authentication = contextSpring.getAuthentication();
            //ta retornando null tem que ver o porque
            if (authentication instanceof Authentication) {
                System.out.println("BOA");
                user = (User) authentication.getPrincipal();

                HttpSession session = (HttpSession) context.getSession(false);
                session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
                Usuario usu = (Usuario) session.getAttribute("usuarioLogado");

                usuarioSessao = usu;
                usuarioAutorizacoes = usu.getUsuarioAutorizacoes();
                nome = usu.getNome();
                admissao = usu.getAdmissao();
                bairro = usu.getBairro();
                celular = usu.getCelular();
                cpf = usu.getCpf();
                data_cadastro = usu.getData_cadastro();
                email_corp = usu.getEmail_corp();
                email_part = usu.getEmail_part();
                endereco = usu.getEndereco();

// escala = usu.getEscala();
unidade = usu.getUnidade();
fechaOcorrencia = usu.getFechaOcorrencia();
visuOcorrencia = usu.getVisuOcorrencia();
alocaOcorrencia = usu.getAlocaOcorrencia();
cadastraEquipamento = usu.getCadastroEquipamento();
matricula = usu.getMatricula();
password = usu.getPassword();
ramal = usu.getRamal();
rg = usu.getRg();
telefone_1 = usu.getTelefone_1();
// id_cidade = usu.getCidade();
// id_funcao = usu.getFuncao();
verificarSenha(password, usu.getUsername());

            }
        }
    } catch (Exception ex) {
        FacesUtil.exibirMensagemErro(ex.getMessage());
    }



    return null;
}

esse metodo é o de logar no sistema.

Posta a classe toda, se possível os xmls de configuração também.
Coloca entre as tags code pra facilitar a leitura.

Vlw

EU não coloquei em tag de codigo para mostar em negrito ao estava a linha do codigo.

A classe inteira LoginBean:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.rpctv.managedBean;

import br.com.rpctv.entidade.AutorizacaoMenu;
import br.com.rpctv.entidade.Unidade;
import br.com.rpctv.entidade.Usuario;
import br.com.rpctv.entidade.UsuarioAutorizacao;
import br.com.rpctv.siseng.Facade.UsuarioFacade;
import br.com.rpctv.siseng.etc.FacesUtil;
import br.com.rpctv.siseng.etc.SessionCounterListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.commons.mail.EmailException;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.primefaces.context.RequestContext;
import javax.activation.*;
import javax.annotation.PostConstruct;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import org.springframework.security.web.authentication.session.SessionAuthenticationException;

/**
 *
 * @author ricardo
 */
@ManagedBean(name = "login")
@SessionScoped
public final class LoginBean implements Serializable {

    private HttpSession session;
    private List<String> usuariosOn = new ArrayList<String>();
    public Integer numeroUsuarioOn;
    private SessionCounterListener sessionCounterListener;
    private SessionAuthenticationException sessionAuthenticationException = null;
    private Usuario usuario;
    private Usuario usuarioSessao;
    private String emailUsuario;
    private String nome;
    private String departamento;
    private Date admissao;
    private String bairro;
    private String celular;
    private String cpf;
    private Date data_cadastro;
    private String email_corp;
    private String email_part;
    private String endereco;
    private Boolean escala;
    private Boolean fechaOcorrencia;
    private Boolean alocaOcorrencia;
    private Boolean visuOcorrencia;
    private Boolean cadastraEquipamento;
    private String matricula;
    private String password;
    private Long ramal;
    private String rg;
    private String autorizacao;
    private String telefone_1;
    private String id_cidade;
    private String id_funcao;
    private Unidade unidade;
    private List<AutorizacaoMenu> autorizacaoMenus;
    private List<UsuarioAutorizacao> usuarioAutorizacoes;
    
    
    //--KEYBOARD\\--
    
    private String  loginKeyBoard;
    private String  SenhaKeyBoard;
    @EJB
    private UsuarioFacade usuarioFacade;
    private Boolean redefinirSenha;
    private String mensagemMotivoRedefinirSenha;
    private Boolean emailExistente = Boolean.FALSE;
    private Boolean liberaMatricula = Boolean.FALSE;
    private Boolean confereMatricula = Boolean.FALSE;
    private String matriculaLembrete;

    public LoginBean() {
    }

    @PostConstruct
    public void init() {
        //verificaUsuarioOn();
    }
    
    
    //KEYBOARD PLUBLICS\\
    
      public void setloginKeyBoard(String loginKeyBoard) {  
        this.loginKeyBoard = loginKeyBoard;  
    }  
    

   public String logar() throws ServletException, IOException {
        try {
            ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
            RequestDispatcher dispatcher = ((HttpServletRequest) context.getRequest()).getRequestDispatcher("/j_spring_security_check");
            dispatcher.forward((HttpServletRequest) context.getRequest(), (HttpServletResponse) context.getResponse());
            FacesContext.getCurrentInstance().responseComplete();
            SecurityContext contextSpring = SecurityContextHolder.getContext();
            User user = null;
            if (contextSpring instanceof SecurityContext) {
                Authentication authentication = contextSpring.getAuthentication();
                System.out.println("TESTE");
                
                // NÃO PASSA NA VERIFICAÇÃO PORQUE:
                //Authentication authentication = contextSpring.getAuthentication();
                //ta retornando null tem que ver o porque
                if (authentication instanceof Authentication) {
                    System.out.println("BOA");
                    user = (User) authentication.getPrincipal();

                    HttpSession session = (HttpSession) context.getSession(false);
                    session.setAttribute("usuarioLogado", usuarioFacade.consultaUsuario(user.getUsername()));
                    Usuario usu = (Usuario) session.getAttribute("usuarioLogado");

                    usuarioSessao = usu;
                    usuarioAutorizacoes = usu.getUsuarioAutorizacoes();
                    nome = usu.getNome();
                    admissao = usu.getAdmissao();
                    bairro = usu.getBairro();
                    celular = usu.getCelular();
                    cpf = usu.getCpf();
                    data_cadastro = usu.getData_cadastro();
                    email_corp = usu.getEmail_corp();
                    email_part = usu.getEmail_part();
                    endereco = usu.getEndereco();
//                    escala = usu.getEscala();
                    unidade = usu.getUnidade();
                    fechaOcorrencia = usu.getFechaOcorrencia();
                    visuOcorrencia = usu.getVisuOcorrencia();
                    alocaOcorrencia = usu.getAlocaOcorrencia();
                    cadastraEquipamento = usu.getCadastroEquipamento();
                    matricula = usu.getMatricula();
                    password = usu.getPassword();
                    ramal = usu.getRamal();
                    rg = usu.getRg();
                    telefone_1 = usu.getTelefone_1();
//    id_cidade = usu.getCidade();
//    id_funcao = usu.getFuncao();
                    verificarSenha(password, usu.getUsername());

                }
            }
        } catch (Exception ex) {
            FacesUtil.exibirMensagemErro(ex.getMessage());
        }



        return null;
    }

    public String getLoginKeyBoard() {
        return loginKeyBoard;
    }

    public void setLoginKeyBoard(String loginKeyBoard) {
        this.loginKeyBoard = loginKeyBoard;
    }

    public String getSenhaKeyBoard() {
        return SenhaKeyBoard;
    }

    public void setSenhaKeyBoard(String SenhaKeyBoard) {
        this.SenhaKeyBoard = SenhaKeyBoard;
    }

    
    
    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public Boolean getCadastraEquipamento() {
        return cadastraEquipamento;
    }

    public void setCadastraEquipamento(Boolean cadastraEquipamento) {
        this.cadastraEquipamento = cadastraEquipamento;
    }

    public Boolean getVisuOcorrencia() {
        return visuOcorrencia;
    }

    public void setVisuOcorrencia(Boolean visuOcorrencia) {
        this.visuOcorrencia = visuOcorrencia;
    }

    public Boolean getAlocaOcorrencia() {
        return alocaOcorrencia;
    }

    public void setAlocaOcorrencia(Boolean alocaOcorrencia) {
        this.alocaOcorrencia = alocaOcorrencia;
    }

    public Date getData() {
        Date data = new Date();
        Locale locale = Locale.getDefault(); //Pega as configuracoes regionais do Sistema Operacional.
        DateFormat dt = DateFormat.getDateInstance(DateFormat.DEFAULT);
        return data;
    }

    public SessionAuthenticationException getSessionAuthenticationException() {
        return sessionAuthenticationException;
    }

    public void setSessionAuthenticationException(SessionAuthenticationException sessionAuthenticationException) {
        this.sessionAuthenticationException = sessionAuthenticationException;
    }

    public void atualizar() {
        RequestContext context = RequestContext.getCurrentInstance();
        context.update("@all");
    }

    public String getIp() {
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
        String ip = request.getRemoteAddr();
        return ip;
    }

    public void fechaPainel() {
        redefinirSenha = Boolean.FALSE;
    }

    public Boolean getFechaOcorrencia() {
        return fechaOcorrencia;
    }

    public void setFechaOcorrencia(Boolean fechaOcorrencia) {
        this.fechaOcorrencia = fechaOcorrencia;
    }

    public void usuarioLogado() {
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getEmailUsuario() {
        return emailUsuario;
    }

    public void setEmailUsuario(String emailUsuario) {
        this.emailUsuario = emailUsuario;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public HttpSession getSession() {
        return session;
    }

    public void setSession(HttpSession session) {
        this.session = session;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEmail_corp() {
        return email_corp;
    }

    public void setEmail_corp(String email_corp) {
        this.email_corp = email_corp;
    }

    public String getEmail_part() {
        return email_part;
    }

    public void setEmail_part(String email_part) {
        this.email_part = email_part;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Long getRamal() {
        return ramal;
    }

    public void setRamal(Long ramal) {
        this.ramal = ramal;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getTelefone_1() {
        return telefone_1;
    }

    public void setTelefone_1(String telefone_1) {
        this.telefone_1 = telefone_1;
    }

    public UsuarioFacade getUsuarioFacade() {
        return usuarioFacade;
    }

    public void setUsuarioFacade(UsuarioFacade usuarioFacade) {
        this.usuarioFacade = usuarioFacade;
    }

    public Date getAdmissao() {
        return admissao;
    }

    public void setAdmissao(Date admissao) {
        this.admissao = admissao;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public Date getData_cadastro() {
        return data_cadastro;
    }

    public void setData_cadastro(Date data_cadastro) {
        this.data_cadastro = data_cadastro;
    }

    public Boolean getEscala() {
        return escala;
    }

    public void setEscala(Boolean escala) {
        this.escala = escala;
    }

    public String getId_cidade() {
        return id_cidade;
    }

    public void setId_cidade(String id_cidade) {
        this.id_cidade = id_cidade;
    }

    public String getId_funcao() {
        return id_funcao;
    }

    public void setId_funcao(String id_funcao) {
        this.id_funcao = id_funcao;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getAutorizacao() {
        return autorizacao;
    }

    public void setAutorizacao(String autorizacao) {
        this.autorizacao = autorizacao;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }

    public Usuario getUsuarioSessao() {
        return usuarioSessao;
    }

    public void setUsuarioSessao(Usuario usuarioSessao) {
        this.usuarioSessao = usuarioSessao;
    }

    public String getMensagemMotivoRedefinirSenha() {
        return mensagemMotivoRedefinirSenha;
    }

    public void setMensagemMotivoRedefinirSenha(String mensagemMotivoRedefinirSenha) {
        this.mensagemMotivoRedefinirSenha = mensagemMotivoRedefinirSenha;
    }

    public Boolean getRedefinirSenha() {
        return redefinirSenha;
    }

    public void setRedefinirSenha(Boolean redefinirSenha) {
        this.redefinirSenha = redefinirSenha;
    }

    public Boolean getEmailExistente() {
        return emailExistente;
    }

    public void setEmailExistente(Boolean emailExistente) {
        this.emailExistente = emailExistente;
    }

    public Boolean getLiberaMatricula() {
        return liberaMatricula;
    }

    public void setLiberaMatricula(Boolean liberaMatricula) {
        this.liberaMatricula = liberaMatricula;
    }

    public String getMatriculaLembrete() {
        return matriculaLembrete;
    }

    public void setMatriculaLembrete(String matriculaLembrete) {
        this.matriculaLembrete = matriculaLembrete;
    }

    public Boolean getConfereMatricula() {
        return confereMatricula;
    }

    public void setConfereMatricula(Boolean confereMatricula) {
        this.confereMatricula = confereMatricula;
    }

    public void verificarSenha(String password, String username) {
        if (password.equals("grpcom")) {
            redefinirSenha = Boolean.TRUE;
            mensagemMotivoRedefinirSenha = "";
            mensagemMotivoRedefinirSenha = "Sua senha não pode ser GRPCOM";
        } else if (password.equals("1234") || password.equals("123456") || password.equals("123467890") || password.contains("12345") || password.contains("111") || password.contains("222") || password.contains("321")) {
            redefinirSenha = Boolean.TRUE;
            mensagemMotivoRedefinirSenha = "";
            mensagemMotivoRedefinirSenha = "Sua senha é muito fácil";
        } else if (password.equals(username)) {
            redefinirSenha = Boolean.TRUE;
            mensagemMotivoRedefinirSenha = "";
            mensagemMotivoRedefinirSenha = "Sua senha não pode ser igual o login!";
        } else {
            redefinirSenha = Boolean.FALSE;
        }
    }

    public void verificaEmail(AjaxBehaviorEvent event) {
        usuario = usuarioFacade.consultaUsuarioEmail(emailUsuario);
        try {

            if (emailUsuario.equals(usuario.getEmail_corp())) {
                emailExistente = Boolean.TRUE;
                liberaMatricula = Boolean.TRUE;
            } else {
                emailExistente = Boolean.FALSE;
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Email não cadastrado no sistema");
                FacesContext.getCurrentInstance().addMessage(null, msg);
            }
        } catch (Exception e) {
            emailExistente = Boolean.FALSE;
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Email não cadastrado no sistema");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

    }

    public void verificaMatricula(AjaxBehaviorEvent event) {
        System.out.println("-----" + usuario.getMatricula());
        try {
            if (matriculaLembrete.equals(usuario.getMatricula())) {
                confereMatricula = Boolean.TRUE;
            } else {
                confereMatricula = Boolean.FALSE;
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Essa matricula não existe ou não é pertencente a este email");
                FacesContext.getCurrentInstance().addMessage(null, msg);
            }
        } catch (Exception e) {
            confereMatricula = Boolean.FALSE;
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR!", "Essa matricula não existe ou não é pertencente a este email");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void lembreteSenha(ActionEvent event) throws Exception {
        usuario = usuarioFacade.consultaUsuarioEmail(emailUsuario);
        usuario.setPassword("grpcom");
        usuarioFacade.salvar(usuario);

    }

    public void logout() throws IOException {
        // usuariosOn.remove(usuarioSessao);
        SecurityContextHolder.getContext().setAuthentication(null);
        FacesContext.getCurrentInstance().getExternalContext().redirect("login.xhtml");
    }

    public void getEncerraSessao() {
        System.out.println("----ENTREI NO METODO ----");
//        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
//        Exception exception = (Exception) context.getSessionMap().get(WebAttributes.AUTHENTICATION_EXCEPTION);
//
//        context.getSessionMap().put(WebAttributes.AUTHENTICATION_EXCEPTION, null);
//        if (exception instanceof SessionAuthenticationException) {
//            System.out.println("----AQUI -----");
////             event.getSession().invalidate();
//            session.invalidate();
//        }
    }

 
//    public void verificaUsuarioOn() {
//        for (String usu : SessionCounterListener.getUsuarios()) {
//            usuario = usuarioFacade.consultaUsuario(usu);
//            if (!usuariosOn.contains(usuario)) {
//                usuariosOn.add(usuario);
//            }
//        }
//    }
    public Integer getNumeroUsuarioOn() {
        numeroUsuarioOn = SessionCounterListener.getTotalActiveSessions();
        return numeroUsuarioOn;
    }

    public void setNumeroUsuarioOn(Integer numeroUsuarioOn) {
        this.numeroUsuarioOn = numeroUsuarioOn;
    }

    public List<String> getUsuariosOn() {
        usuariosOn = SessionCounterListener.getUsuarios();
        return usuariosOn;
    }

    public void setUsuariosOn(List<String> usuariosOn) {
        this.usuariosOn = usuariosOn;
    }

    public List<AutorizacaoMenu> getAutorizacaoMenus() {
        return autorizacaoMenus;
    }

    public void setAutorizacaoMenus(List<AutorizacaoMenu> autorizacaoMenus) {
        this.autorizacaoMenus = autorizacaoMenus;
    }

    public List<UsuarioAutorizacao> getUsuarioAutorizacoes() {
        return usuarioAutorizacoes;
    }

    public void setUsuarioAutorizacoes(List<UsuarioAutorizacao> usuarioAutorizacoes) {
        this.usuarioAutorizacoes = usuarioAutorizacoes;
    }
}

Posta o web.xml e o arquivo de configuração do Security também.

WEB:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!--    indica que o projeto esta em producao-->
    <display-name>/touch</display-name>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>
    <!--    configuracao do faces servlet-->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--padrao da url que o faces servlet ira trabalhar-->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <!--tempo de sessao    -->
    <session-config>
        <session-timeout>10</session-timeout>
    </session-config>
    <!--Pagina inicial    -->
    <welcome-file-list>
        <welcome-file>/view/index.xhtml</welcome-file>
    </welcome-file-list>
    <!--    Configurações para o Spring Security 3-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <persistence-context-ref>
        <persistence-context-ref-name>SISENG2PU</persistence-context-ref-name>
        <persistence-unit-name>SISENG2PU</persistence-unit-name>
    </persistence-context-ref>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <listener>
        <listener-class>
      org.springframework.security.web.session.HttpSessionEventPublisher
        </listener-class>
    </listener>
    <!-- FIM DO SPRING -->
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/erros/Erro403</location>
    </error-page>
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/primefaces_resource/*</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
        <param-value>/index.xhtml</param-value>
    </context-param>
    <servlet>
        <servlet-name>Push Servlet</servlet-name>
        <servlet-class>org.primefaces.push.PushServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Push Servlet</servlet-name>
        <url-pattern>/primepush/*</url-pattern>
    </servlet-mapping>
    
    

</web-app>

onde posso ver a configuração do spring security?
Creio que seja o application context:

<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:b="http://www.springframework.org/schema/beans"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
                             http://www.springframework.org/schema/beans/spring-beans.xsd
                             http://www.springframework.org/schema/security
                             http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <http auto-config="true" access-denied-page="/negado.xhtml" use-expressions="true">
     <intercept-url pattern="/view/**" access="hasAnyRole('ROLE_ADMIN','ROLE_TECNICO','ROLE_USER','ROLE_OPEC','ROLE_OPERADOR','ROLE_USUARIO','ROLE_JORNALISMO', 'ROLE_PROGRAMACAO', 'ROLE_OPECCORD', 'ROLE_ADMINISTRACAO','ROLE_ROTEIRO' )"/>   
        <form-login login-page="/login.xhtml" authentication-failure-url="/login.xhtml?erro=true"/>
        
        <session-management>
            <concurrency-control max-sessions="2" error-if-maximum-exceeded="true" />
        </session-management>
       
    </http>
    <authentication-manager>
        <authentication-provider>

<password-encoder hash="md5"/>
            <jdbc-user-service data-source-ref="dataSource"
               users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
               authorities-by-username-query="SELECT username as username, nome as authority FROM usuarioautorizacao WHERE username=?"
            />
        </authentication-provider>
    </authentication-manager>



    <b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <b:property name="url" value="jdbc:oracle:thin:@xxxxxxxxxxx:XE"/>
        <b:property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
        <b:property name="username" value="xxxxxx" />
        <b:property name="password" value="xxxxxxxxxxx" />
    </b:bean>

</b:beans>

Então fiz um if:

 if(authentication==null){
                   System.out.println("Usuario nulo");
              
                    
                }

e realmente o authentication esta recebendo nulo.

E então eu apurei o erro e é esse erro que esta mostrando:

java.awt.HeadlessException

o que significa?

Cara é estranho porque esse código é sistema JSF e funciona, e agora estou pegando esse código e colocando ele para JSF mobile tem problema com isso? nçao deveria funcionar?

Minha depurações são essas:

INFO: DISPATCHER org.apache.catalina.core.ApplicationDispatcher@1e7d3f55
INFO: CONTEXT org.springframework.security.core.context.SecurityContextImpl@ffffffff: Null authentication
INFO: contextSpringnull
INFO: ERRO java.lang.NullPointerException
INFO: RETURN NULL

To achando que pode ser o filtro em mais nao sei o que pode estar errado, não sei porque talvez não esteja recebendo.


<authentication-manager>
        <authentication-provider>

<password-encoder hash="md5"/>

            <jdbc-user-service data-source-ref="dataSource"
               users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
               authorities-by-username-query="SELECT username as username, nome as authority FROM usuarioautorizacao WHERE username=?"
            />
       
        </authentication-provider>
    </authentication-manager>

Faz um teste e verifica se o seu bean dataSource não está vindo null.
Verifica as colunas username, password e enable existem na tabela usuario.
Verifica se existem as colunas na tabela usuarioautorizacao.

Então cara, os codigos desse é o mesmo codigo do outro sistemas, com algumas diferenças, mas o beans e os manager beans continuam os mesmo, e o application context tambem (datasourse) e la no outro sistema funciona perfeitamento, só adaptei algumas coisas para modo mobile do primefaces.
E não entendo porque mue contexSpring.getAuthentication() recebe null, sendo que na outra aplicação esta funcionando normal.

Tenta configurar o mapeamento do filter do security pra pegar ERROR também.

<filter-mapping>  
        <filter-name>springSecurityFilterChain</filter-name>  
        <url-pattern>/*</url-pattern>  
        <dispatcher>FORWARD</dispatcher>  
        <dispatcher>REQUEST</dispatcher>  
        <dispatcher>ERROR</dispatcher>  
</filter-mapping> 

A mesma coisa não mudou nada.

será que na versão mobile do primefaces o spring security não funciona?

o Meu:

SecurityContextHolder.getContext();

está retornando nulo.