Génération d'un jeton Kerberos dynamique à l'aide d'un module de connexion JAAS empilé

Vous pouvez transmettre de manière dynamique un nom d'utilisateur et un mot de passe au générateur de jetons Kerberos, KRBGenerateLoginModule, si vous utilisez des API WSS. Toutefois, si vous devez utiliser des ensembles de règles et des liaisons, vous ne pouvez pas transmettre un nom d'utilisateur et un mot de passe de manière dynamique au générateur de jetons Kerberos dans une configuration standard car le gestionnaire de rappel et le nom d'utilisateur et le mot de passe du gestionnaire de rappel sont des valeurs fixes. Des jetons Kerberos dynamiques peuvent être créés à l'aide d'ensembles de règles et de liaisons si un module de connexion JAAS personnalisé est utilisé.

Avant de commencer

Si vous créez un module de connexion JAAS personnalisé ou ajoutez un jeton UsernameToken au contexte de demande du client, vous pouvez personnaliser le nom d'utilisateur et le mot de passe utilisés par le générateur de jetons Kerberos lorsqu'il demande le ticket Kerberos.

Pourquoi et quand exécuter cette tâche

GenericSecurityTokenFactory fournit une SPI permettant de créer un jeton que KRBGenerateLoginModule peut utiliser pour personnaliser le nom d'utilisateur et le mot de passe utilisés lorsqu'il demande le ticket Kerberos.

La procédure ci-après montre comment utiliser la méthode du module de connexion JAAS empilé pour personnaliser le nom d'utilisateur et le mot de passe utilisés par KRBGenerateLoginModule lorsqu'il crée un jeton Kerberos. Vous pouvez parvenir aux mêmes résultats en plaçant le jeton UsernameToken, créé au cours de cette procédure, sur le contexte de demande du client. Vous ne pouvez créer un jeton Kerberos dynamique qu'à partir d'un jeton UsernameToken que vous créez. Vous ne pouvez créer de jeton Kerberos dynamique à partir d'un ticket Kerberos. Pour plus d'informations sur la manière de placer le jeton sur le contexte de demande du client, reportez-vous aux constantes suivantes dans le fichier com.ibm.wsspi.wssecurity.core.Constants :

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

Procédure

  1. Créez un module de connexion JAAS personnalisé.
    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 {
      //A des fins de lisibilité, ce module de connexion ne fournit aucune
      //protection contre les NPE
    
      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;
      }
      //Implémentez le reste des méthodes requises par
      // l'interface LoginModule
    }
  2. Créez une configuration de connexion JAAS.
    1. Dans la console d'administration, sélectionnez Sécurité -> Sécurité globale.
    2. Sous Authentification, sélectionnez Service d'authentification et d'autorisation Java.
    3. Sélectionnez Connexions de système.
    4. Créez le générateur avec le module personnalisé préalablement.
      1. Cliquez sur Nouveau et définissez Alias = test.generate.krb.
      2. Cliquez sur Nouveau et définissez Module class name = test.tokens.MyKrbCustomLoginModule.
      3. Sélectionnez Utiliser le proxy de module de connexion .
      4. Cliquez sur OK.
      5. Cliquez sur Nouveau et sélectionnez Module class name = com.ibm.ws.wssecurity.wssapi.token.impl.KRBGenerateLoginModule.
      6. Cliquez sur Nouveau et sélectionnez Module class name = com.ibm.ws.wssecurity.wssapi.token.impl.DKTGenerateLoginModule.
      7. Cliquez sur OK.
      8. Cliquez sur JAAS - Connexions de système.
  3. Configurez votre générateur de jetons Kerberos pour qu'il utilise la nouvelle configuration JAAS.
    1. Ouvrez votre configuration de liaisons à modifier.

      Dans la console d'administration, sélectionnez WS-Security > Authentification et protection.

    2. Sous Jetons d'authentification, sélectionnez le jeton Kerberos sortant à modifier.
    3. Sélectionnez JAAS login = test.generate.krb.
  4. Cliquez sur Sauvegarder.
  5. Redémarrez le serveur d'applications pour appliquer les modifications à la configuration JAAS.
  6. Testez le service.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_gen_dynamickerbtoken
Nom du fichier : twbs_gen_dynamickerbtoken.html