[Spring Security] Gerenciamento de sessões no JSF 2

Alguem tem algum exemplo gerenciamento de sessões no spring security?
Fiz o exemplo conforme o manual e não funciona.
Estou tentando matar a sessão do usuário caso alguem tente logar em outra máquina ou navegador.

Segue o código abaixo:

CONFIGURACAO SPRING

 <security:http auto-config="false" use-expressions="true" entry-point-ref="authenticationEntryPoint">
		<security:custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
		<security:custom-filter ref="authenticationFilter" position="FORM_LOGIN_FILTER"/>
		<security:intercept-url pattern="/pages/view/**" access="isAuthenticated()"/>
		<security:logout invalidate-session="true" logout-success-url="/login" logout-url="/logout"/>
		<security:session-management session-authentication-strategy-ref="sas"/> 
	</security:http>
	
 	<bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
    	<property name="sessionRegistry" ref="sessionRegistry" />
    	<property name="expiredUrl" value="/expired" />
  	</bean>

	<bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />

	<bean id="authenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
		<property name="loginFormUrl" value="/index.jsf"/>
	</bean>

	<bean id="customAuthenticationSuccessHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">
		<property name="defaultTargetUrl" value="/logado"/>
	</bean>

	<bean id="customAuthenticationFailureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
		<property name="defaultFailureUrl" value="/login?error=true"/>
	</bean>
 
	 <bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
	 	<property name="sessionAuthenticationStrategy" ref="sas" />
    	<property name="authenticationManager" ref="_authenticationManager"/>
    	<property name="authenticationFailureHandler" ref="customAuthenticationFailureHandler" />
    	<property name="authenticationSuccessHandler" ref="customAuthenticationSuccessHandler"/>
	 </bean>
	
	<bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
		<constructor-arg name="sessionRegistry" ref="sessionRegistry"/>
		<property name="maximumSessions" value="1"/>
		<property name="exceptionIfMaximumExceeded" value="true"/>
	</bean>

CLASSE

	public UsuarioSistemaDTO requestAutenticarUsuario(String usuario, String senha) throws BusinessMessageException, ApplicationMessageException{
		UsuarioSistemaDTO dto = new UsuarioSistemaDTO();
		try{
			ApplicationContext appContext = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
			AuthenticationManager manager = (AuthenticationManager) appContext.getBean("_authenticationManager");
			UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(usuario, senha);
			Authentication authentication = manager.authenticate(usernamePasswordAuthenticationToken);
			SecurityContextHolder.getContext().setAuthentication(authentication);
			List<GrantedAuthority> authorities = (List<GrantedAuthority>) SecurityContextHolder.getContext().getAuthentication().getAuthorities();
			dto.setUsuario(usuario);
			SecurityContextHolder.getContext().getAuthentication();
			List<String> permissoes = new ArrayList<String>();
			for (GrantedAuthority grantedAuthority : authorities) {
				permissoes.add(grantedAuthority.getAuthority());
			}
			dto.setPermissoes(permissoes);
			Funcionario funcionario = funcionarioService.getByUser(usuario);
			sessionService.initSession(funcionario);
                        
         //NAO  OBTEM OS USUARIO REGISTRADOS NA SESSAO <<<<<<<------------------------------------------------------------------------
			for(Object object:sessionRegistry.getAllPrincipals()){
				System.out.println(object.toString());
			}
		}catch (BadCredentialsException e) {
			throw new BusinessMessageException(this.getMessage("exceptions.usuario.senha.invalido"));
		}catch (Exception e) {
			throw new ApplicationMessageException(this.getMessage("app.error.unknown"));
		}
		return dto;
	}

é meu caro… tenho uma pessima noticia para vc… JSF 2.0 nao trabalha bem com Spring Security

JSF nao trabalha com URL… e o spring security trabalha… logo torna o uso dos 2 nao possivel… vc vai ter que implementar na mão a coisa toda…

eu tive o mesmo problema que voce e tive que abandonar a ideia de por o Spring security e implementei na raça XD

[quote=darklordkamui]é meu caro… tenho uma pessima noticia para vc… JSF 2.0 nao trabalha bem com Spring Security

JSF nao trabalha com URL… e o spring security trabalha… logo torna o uso dos 2 nao possivel… vc vai ter que implementar na mão a coisa toda…

eu tive o mesmo problema que voce e tive que abandonar a ideia de por o Spring security e implementei na raça XD[/quote]

Você já tentou desenvolver com spring security com JaSig CAS?

Eu vi esse tutorial mais estou com criando coragem para fazer, pois já estou 3 dias tentando fazer funcionar conforme o documento e não funciona:

Dei uma olhada nas features do spring security não vi nada sobre o assunto nas proximas versões.

Qualquer coisa se você quiser te mando um mp com meu gtalk para gente conversar sobre assunto.

claro que podemos conversar sobre me manda seu gmail por mp que te adiciono e conversamos sobre…

olha antes de vc falar do JaSig CAS eu nunca tinha ouvido falar… dei uma pesquisada e olhei akele link que vc postou, achei interresante… mais nao saberia aonde usar essa tecnologia adequadamente…

talvez com isso de para implementar o spring security com jsf mais nao garanto que sera algo performatico… igual seria com REST