Substituindo o método de autenticação do consumidor de UsernameToken usando um módulo de login do JAAS empilhado
Por padrão, o consumidor de UsernameToken de segurança dos serviços da web, UNTConsumeLoginModule, sempre valida o nome de usuário e a senha contidos no token com relação ao registro do WebSphere. É possível usar as SPIs fornecidas pelo GenericSecurityTokenFactory para efetuar bypass nesse método de autenticação.
Sobre Esta Tarefa
Se desejar substituir o método de autenticação usado pelo UNTConsumeLoginModule, você deverá fornecer seu próprio módulo de login do JAAS customizado para fazer a autenticação. O módulo de login customizado é empilhado em UNTConsumeLoginModule em uma configuração do JAAS customizada. O UNTConsumeLoginModule consome e valida o XML do token. A validação dos valores fornecidos para nome de usuário e senha é adiada para o módulo de login empilhado customizado.
Como o uso de UNTConsumeLoginModule carrega a suposição de que o nome de usuário e a senha serão autenticados, são colocados mais requisitos em um módulo de login empilhado que deve executar esta função do que são colocados em módulos de login que somente devem fornecer a funcionalidade de token dinâmico.
Para indicar para UNTConsumeLoginModule que ele não deve autenticar o nome de usuário e a senha, deve-se configurar a propriedade a seguir no manipulador de retorno de chamada configurado:
com.ibm.wsspi.wssecurity.token.UsernameToken.authDeferred=true
Como a maioria dos módulos de login de Web Services Security, o UNTConsumeLoginModule sempre coloca o token consumido no mapa de estado compartilhado ao qual todos os módulos de login na pilha têm acesso. Quando authDeferred=true é especificado, na fase de confirmação, UNTConsumeLoginModule assegura que o mesmo objeto UsernameToken que foi colocado originalmente no estado compartilhado tenha sido colocado em outro local no estado compartilhado. Se este objeto UsernameToken não puder ser localizado, ocorrerá uma LoginException. Portanto, não é possível apenas configurar authDeferred=true no manipulador de retorno de chamada sem que um módulo de login acompanhante retorne o token para o estado compartilhado.