Gerando um Token do Kerberos Dinâmico Usando Módulo de Login do JAAS Empilhado

É possível passar dinamicamente um nome de usuário e uma senha para o gerador de token do Kerberos, KRBGenerateLoginModule, durante o uso de WSSAPIs. No entanto, se você tiver que usar conjuntos de políticas e ligações, não será possível passar dinamicamente um nome de usuário e uma senha para o gerador de token do Kerberos em uma configuração padrão, pois o manipulador de retorno de chamada e o nome de usuário e a senha no manipulador de retorno de chamada são valores fixos. Os tokens do Kerberos dinâmicos podem ser criados com o uso de conjuntos de políticas e ligações caso um módulo de login do JAAS customizado seja usado.

Antes de Iniciar

Se você criar um módulo de login do JAAS customizado, ou incluir um UsernameToken no contexto da solicitação do cliente, será possível customizar o nome de usuário e a senha que o gerador de token do Kerberos usa ao solicitar o ticket Kerberos.

Sobre Esta Tarefa

O GenericSecurityTokenFactory fornece uma SPI que pode ser usada para criar um token que o KRBGenerateLoginModule pode usar para customizar o nome de usuário e a senha que são usados durante a solicitação do ticket Kerberos.

O procedimento a seguir mostra como usar o método do módulo de login do JAAS empilhado para customizar o nome de usuário e a senha que KRBGenerateLoginModule usará ao criar um token do Kerberos. É possível conseguir os mesmos resultados colocando UsernameToken, criado neste procedimento, no contexto da solicitação do cliente. Só é possível criar um token do Kerberos dinâmico a partir de UsernameToken que você criar. Não é possível criar um token do Kerberos dinâmico a partir de um ticket Kerberos. Para obter mais informações sobre como colocar o token no contexto da solicitação do cliente, consulte as constantes a seguir em com.ibm.wsspi.wssecurity.core.Constants:

  • com.ibm.wsspi.wssecurity.token.tokenHolder
  • com.ibm.wsspi.wssecurity.token.enableCaptureTokenContext

Procedimento

  1. Crie um módulo de login do JAAS customizado.
    package test.tokens;
    
    import com.ibm.websphere.wssecurity.wssapi.token.GenericSecurityTokenFactory;
    import java.util.Map;
    
    import javax.security.auth.Subject;
    import javax.security.auth.callback.CallbackHandler;
    import javax.security.auth.login.LoginException;
    import javax.security.auth.spi.LoginModule;
    import com.ibm.websphere.wssecurity.wssapi.token.UsernameToken;
    
    
    public class MyKrbCustomLoginModule implements LoginModule {
      //For the sake of readability, this login module does not
      //protect against all NPE's
    
      private Map _sharedState;
      private Map _options;
      private CallbackHandler _handler;
    
      public void initialize(Subject subject, CallbackHandler callbackHandler,
                  Map<String, ?> sharedState, Map<String, ?> options) {
    
        this._handler = callbackHandler;
        this._sharedState = sharedState;
        this._options = options;  
      }
    
      public boolean login() throws LoginException {
    
        GenericSecurityTokenFactory factory = null;
        try {
          factory = GenericSecurityTokenFactory.getInstance();
        } catch (Exception e) {
          throw new LoginException(e.toString());
        }
    
        UsernameToken unt = factory.getSimpleUsernameToken("username", "password".toCharArray());
    
        factory.putGeneratorTokenToSharedState(this._sharedState, unt);
    
        return true;
      }
      //implementar o restante dos métodos requeridos pela
      //interface LoginModule
    }
  2. Crie uma nova configuração de login do JAAS.
    1. No console administrativo, selecione Segurança->Segurança global.
    2. Em Autenticação, selecione Java Authentication and Authorization Service.
    3. Selecione Logins do sistema.
    4. Crie o gerador com o módulo customizado primeiro.
      1. Clique em Novo e especifique Alias = test.generate.krb.
      2. Clique em Novo e especifique Nome de classe do módulo = test.tokens.MyKrbCustomLoginModule.
      3. Selecione Usar proxy do módulo de login.
      4. Clique em OK.
      5. Clique em Novo e selecione Nome de classe do módulo = com.ibm.ws.wssecurity.wssapi.token.impl.KRBGenerateLoginModule.
      6. Clique em Novo e selecione Nome de classe do módulo = com.ibm.ws.wssecurity.wssapi.token.impl.DKTGenerateLoginModule.
      7. Clique em OK.
      8. Clique em JAAS - Logins do sistema.
  3. Configure o gerador de token do Kerberos para usar a nova configuração de JAAS.
    1. Abra a configuração de ligações que deseja alterar.

      No console administrativo, selecione WS-Security > Autenticação e proteção.

    2. Em Tokens de Autenticação, selecione o token de saída do Kerberos que deseja alterar.
    3. Selecione Login do JAAS = test.generate.krb.
  4. Clique em Salvar.
  5. Reinicie o servidor de aplicativos para aplicar as mudanças na configuração do JAAS.
  6. Teste o serviço.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_gen_dynamickerbtoken
Nome do arquivo: twbs_gen_dynamickerbtoken.html