JBOSS + Seam + Token

Olá a todos,

Estou tentando configurar uma aplicação Java Web (Jboss+Seam) pra pedir o certificado digital contido em um Token A3 Pronova apenas quando o usuário clicar em um botão, mais ou menos como faz o sistema e-CAC da Receita Federal (https://cav.receita.fazenda.gov.br/scripts/CAV/login/login.asp).
Repare que ao entrar nessa página o protocolo já é HTTPS mas o certificado só é pedido ao se clicar no botão.
Criei uma keystore, incluí o certificado presente no token nela com o aplicativo keytool e confurei o JBoss para aceitar conexões SSL assim:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              maxHttpHeaderSize="8192" emptySessionPath="true"
              address="${jboss.server.home.dir}"
              keystoreFile="${jboss.server.home.dir}/minhakeystore.jks"
              keystorePass="senha"
              clientAuth="false"
              sslProtocol="TLS" />

no web.xml coloquei o seguinte:

	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Paginas Protegidas</web-resource-name>
			<url-pattern>/pages/*</url-pattern>
		</web-resource-collection>
		<user-data-constraint>
			<transport-guarantee>CONFIDENTIAL</transport-guarantee>	    	
		</user-data-constraint>
	</security-constraint>
	<login-config>
			<auth-method>CLIENT-CERT</auth-method>	
			<realm-name>SGC</realm-name>	
			<!--<form-login-config id="FormLoginConfig_1">		    
				<form-login-page>/redirect</form-login-page>	    
				<form-error-page>/error.html</form-error-page>	
			</form-login-config> -->
	</login-config>

no pages.xml tenho o seguinte:

	<exception class="javax.faces.application.ViewExpiredException">
		<redirect view-id="/login.jspx">
			<message for="loginForm" severity="ERROR">#{msgs['commons.erro.sessaoExpirada']}</message>
		</redirect>
	</exception>

	<!-- Configuracao de login -->
	<page view-id="/pages/*" action="#{loginManagerBean.verificarUsuarioLogado}" />
  
	<page view-id="/doLogin.jspx" action="#{loginManagerBean.login}" />

Ou seja para qualquer página em /pages é chamado o método verificarUsuarioLogado que joga uma exceção ViewExpiredException se não estiver logado e é redirecionado para login.jspx que não está protegida.
Nesta página (login.jspx) tem um botão que direciona para o /doLogin.jspx, que direciona para o método login do loginManagerBean.
Este bean contém uma instância de uma classe onde o certificado é carregado automaticamente por um annotation Seam:
@In(value = “#{requestScope[‘javax.servlet.request.X509Certificate’]}”)
private X509Certificate[] certificados;
ou seja o certificado já deve estar carregado na requisição através do mecanismo normal SSL do browser.
Resumo da ópera: se eu ligar o clientAuth=“true” no server.xml do Jboss e chamar a aplicação direto no SSL usando https://localhost:8443/Aplicacao, antes dela carregar o browser pede o certicado digital, pin, tudo beleza, mas se eu usar clientAuth=“false”, não sei como fazer a aplicação solicitar o certificado digital.

Alguém sabe ?

Qualquer auxílio é bem vindo. Grato desde já,
Nelson Teixeira

Nelson Teixeira você conseguiu ? estou exatamente com o mesmo problema =/