Dynamisches Kerberos-Token aus einem JAAS-Anmeldemodul im Stack erstellen

Bei Verwendung von WSSAPIs können Sie einen Benutzernamen und ein Kennwort dynamisch an den Kerberos-Token-Generator, KRBGenerateLoginModule, übermitteln. Wenn Sie jedoch Richtliniensätze und Bindungen verwenden müssen, ist es nicht möglich, in einer Standardkonfiguration einen Benutzername und ein Kennwort dynamisch an den Kerberos-Token-Generator zu übergeben, weil sowohl der Callback-Handler als auch der Benutzername und das Kennwort im Callback-Handler feste Werte sind. Dynamische Kerberos-Token können dann mit Richtliniensätzen und Bindungen erstellt werden, wenn ein angepasstes JAAS-Anmeldemodul verwendet wird.

Vorbereitende Schritte

Wenn Sie ein angepasstes JAAS-Anmeldemodul erstellen oder dem Anforderungskontext eines Clients ein Benutzernamenstoken (UsernameToken) hinzufügen, können Sie Benutzernamen und Kennwort, die der Kerberos-Token-Generator für die Anforderung des Kerberos-Tickets verwendet, anpassen.

Informationen zu diesem Vorgang

Mit einer SPI von GenericSecurityTokenFactory können Sie ein Token erstellen, das KRBGenerateLoginModule verwendet, um den Benutzernamen und das Kennwort anzupassen, die beim Anfordern des Kerberos-Tickets verwendet werden.

Die folgende Prozedur zeigt, wie Sie mit der Methode des JAAS-Anmeldmoduls im Stack den Benutzernamen und das Kennwort, das KRBGenerateLoginModule zum Erstellen eines Kerberos-Token verwendet, anpassen können. Sie erhalten dasselbe Ergebnis, wenn Sie das Benutzernamenstoken (UsernameToken), das in dieser Prozedur erstellt wird, in den Anforderungskontext des Clients aufnehmen. Ein dynamisches Kerberos-Token kann nur aus einem von Ihnen erstellten Benutzernamenstoken erstellt werden. Es ist nicht möglich, ein dynamisches Kerberos-Token aus einem Kerberos-Ticket zu erstellen. Wenn Sie weitere Informationen dazu benötigen, wie das Token in den Anforderungskontext des Clients aufgenommen wird, sehen Sie sich die folgenden Konstanten in com.ibm.wsspi.wssecurity.core.Constants an:

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

Vorgehensweise

  1. Erstellen Sie ein angepasstes JAAS-Anmeldemodul.
    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 {
      //Aus Gründen der Lesbarkeit ist dieses Anmeldemodul so
      //aufgebaut, dass es nicht vor allen Nullzeigerausnahmen (NPEs) schützt
    
      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;
      }
      //Implementierung der übrigen Methoden, die die Schnittstelle des Anmeldemoduls
      //(LoginModule) erfordert.
    }
  2. Erstellen Sie eine neue JAAS-Anmeldekonfiguration.
    1. Wählen Sie in der Administrationskonsole Sicherheit -> Globale Sicherheit aus.
    2. Wählen Sie unter "Authentifizierung" Java Authentication and Authorization Service aus.
    3. Wählen Sie Systemanmeldungen aus.
    4. Erstellen Sie zunächst den Generator mit dem angepassten Modul.
      1. Klicken Sie auf Neu, und geben Sie Alias = test.generate.krb an.
      2. Klicken Sie auf Neu, und geben Sie Name der Modulklasse = test.tokens.MyKrbCustomLoginModule an.
      3. Wählen Sie Proxy für Anmeldemodul verwenden aus.
      4. Klicken Sie auf OK.
      5. Klicken Sie auf Neu, und wählen Sie Name der Modulklasse = com.ibm.ws.wssecurity.wssapi.token.impl.KRBGenerateLoginModule aus.
      6. Klicken Sie auf Neu, und wählen Sie Name der Modulklasse = com.ibm.ws.wssecurity.wssapi.token.impl.DKTGenerateLoginModule aus.
      7. Klicken Sie auf OK.
      8. Klicken Sie auf JAAS - Systemanmeldungen.
  3. Konfigurieren Sie den Kerberos-Token-Generator für die Verwendung der neuen JAAS-Konfiguration.
    1. Öffnen Sie die Bindungskonfiguration, die geändert werden soll.

      Wählen Sie in der Administrationskonsole WS-Security > Authentifizierung und Zugriffsschutz aus.

    2. Wählen Sie unter "Authentifizierungstoken" das abgehende Kerberos-Token aus, das Sie ändern möchten.
    3. Wählen Sie JAAS-Anmeldung = test.generate.krb aus.
  4. Klicken Sie auf Speichern.
  5. Starten Sie den Anwendungsserver erneut, um die JAAS-Konfigurationsänderungen anzuwenden.
  6. Testen Sie Ihren Service.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_gen_dynamickerbtoken
Dateiname:twbs_gen_dynamickerbtoken.html