Como salvar um usuário autenticado no JASPIC?
Eu desenvolvi um SAM (Módulo de autenticação de segurança) e implementei ovalidateRequest
método. Eu também tenho um webapp simples configurado para usar esse SAM.
No meuvalidateRequest
método, verifico o clientSubject e defino umCallerPrincipalCallback
com um nome de usuário codificado e umGroupPrincipalCallback
com um nome de grupo codificado:
final CallerPrincipalCallback callerPrincipalCallback = new CallerPrincipalCallback(clientSubject, "anonymous");
final GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, new String[] {"user"});
try {
this.handler.handle(new Callback[] {callerPrincipalCallback, groupPrincipalCallback});
} catch (IOException | UnsupportedCallbackException e) {
logger.error(e.getMessage());
}
Percebi que toda vez que atualizo um servlet no meu aplicativo da web, o assunto do cliente fica simplesmente em branco,logger.debug("Client: {}", clientSubject);
:
2015-05-05 11:21:02,200 DEBUG n.m.j.s.Saml2AuthModule [http-listener-1(2)] Client: Subject:
É possível "salvar" um assunto de alguma forma, para que o assunto seja anexado à sessão e eu possa simplesmente ignorar o login no mesmo usuário todas as vezes?
EDITAR Acho que encontrei uma maneira de armazená-lo manualmente noHttpSession
: req.getSession().setAttribute("subject", user);
Não é bonito, mas funciona.