Controle de Usuario em JSF

Boa tarde caros amigos do GUJ. Estou com o seguinte problema:

eu preciso pegar o usuario logado na rede, e então dar permissão dele a partir do nível de acesso dele. E então, vamos lá aos passos :

Saca só, eu tenho um filtro ok ? Esse filtro serve para pegar o usuario logado na rede. isso utilizando NTLM com uma api jcifs.jar. Dae eu tenho o seguinte:

<filter>
    <filter-name>NtlmHttpFilter</filter-name>
    <filter-class>jcifs.http.NtlmHttpFilter</filter-class>
  
    <init-param>
        <param-name>jcifs.netbios.wins</param-name>
        <param-value>172.31.128.21</param-value>
    </init-param>
    <init-param>
        <param-name>jcifs.smb.client.domain</param-name>
        <param-value>srh</param-value>
    </init-param>
    <init-param>
        <param-name>jcifs.smb.client.username</param-name>
        <param-value>sistemas.srh</param-value>
    </init-param>
    <init-param>
        <param-name>jcifs.smb.client.password</param-name>
        <param-value>p@trupi</param-value>
    </init-param>
    <init-param>
    	<param-name>jcifs.netbios.baddr</param-name>
    	 <param-value>172.31.128.255</param-value>
    </init-param>
     <init-param>
		<param-name>jcifs.util.log</param-name>
		<param-value>ALL</param-value>
	</init-param>
   	<init-param>
		<param-name>jcifs.http.enableBasic</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>

<filter-mapping>
    <filter-name>NtlmHttpFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

eu preciso pegar esse usuario logado e ir buscar num servidor X. Para isso, eu tenho a entidade

@Entity
@Table([dados do usuario])     < --- refere-se ao banco 172.168.0.25
public class Usuario{
}

ou seja, essa classe é mapeada para view "[dados do usuario]" que está num servidor remoto 172.168.0.25. Até aqui tudo beleza, ou seja, tudo funciona, eu tenho os dados do usuario que eu quero. Através do login dele, eu faço uma busca para obter os dados que eu preciso.

public Usuario buscarUsuario(String login){


}

… quando eu receber esse Usuario, eu terei os dados do usuario logado, como por exemplo, nome do usuário, matrícula, setor, etc …

Até aqui tudo bem, o problema é que, quando a aplicação inicializa, eu já preciso saber o nível de acesso daquele usuario no meu sistema. E outra, quando o Usuario fizer uma solicitação, que é a função principal do sistema, eu preciso gravar alguns dados dele, como por exemplo, nome, matrícula, setor e nível de acesso.

Para que isso aconteça, eu preciso ter uma tabela usuario dentro do meu sistema, concorda ? Ou seja, terei uma tabela usuario dentro de 172.10.1.16. E então para que eu tenha essa tabela usuario, eu teria que ter outra entidade UsuarioLocal que seria para mapear com o banco da aplicação.

como exemplo:

@Entity
@Table(Schema="teste",name="tbsisc_usuario"){      < ------  refere-se ao banco 172.10.1.16.
}

… Mas ae temos vários problemas.

1º duplicação de tabelas - não é necessário, haja visto que já tenho como pegar os dados.
2º duplicação de entidade - a entidade Usuario e a UsuarioLocal as 2 se referem a mesma pessoa.

e outros problemas a mais …

E então, uma saída que eu tentei foi, colocar os dados do Usuario na Sessão, e ser utilizada por toda a aplicação, sem precisar criar uma outra entidade duplicada chamda UsuarioLocal, até pq isso foge um bocado das regras.

Mas tem N problemas com isso.

Vocês me entendem onde quero chegar ?

OBS: Estou utilizando JPA.