Programmgesteuerte CORBA-Anmeldung (Common Object Request Broker Architecture) auf JAAS (Java Authentication and Authorization Service) migrieren (CORBA und JAAS)

Dieser Artikel veranschaulicht eine programmgesteuerte Anmeldung mit den CORBA-basierten APIs für programmgesteuerte Anmeldung.

Vorbereitende Schritte

[AIX Solaris HP-UX Linux Windows][IBM i]Dieses Dokument umreißt die veralteten CORBA-APIs für programmgesteuerte Anmeldung und die vom JAAS angebotenen Alternativen. WebSphere Application Server bietet vollständige Unterstützung für den Java Authentication and Authorization Service (JAAS) als API für programmgesteuerte Anmeldung. Weitere Einzelheiten zur JAAS-Unterstützung finden Sie in den Artikeln Programmgesteuerte Anmeldungen für JAAS (Java Authentication and Authorization Service) konfigurieren und Programmgesteuerte Anmeldungen mit dem Java Authentication and Authorization Service entwickeln.

[z/OS]CORBA-APIs werden in der Umgebung von WebSphere Application Server für z/OS nicht unterstützt. Wenn Sie eine Anwendung von einem anderen WebSphere Application Server-Produkt auf WebSphere Application Server for z/OS portieren möchten, müssen Sie bedenken, dass die Sicherheits-APIs in Version 6.0.x nicht weiter unterstützt werden. Wenn Sie diese Anwendungen in WebSphere Application Server for z/OS 8.0 verwenden möchten, müssen Sie eine Migration auf Java™ Authentication and Authorization Service (JAAS) durchführen.

Die folgenden CORBA-APIs für programmgesteuerte Anmeldung sind veraltet.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${Installationsstammverzeichnis.für.Benutzer}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/LoginHelper.java.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${Installationsstammverzeichnis.für.Benutzer}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [IBM i]Profilstammverzeichnis/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [AIX Solaris HP-UX Linux Windows][IBM i]org.omg.SecurityLevel2.Credentials. Die API ist zwar im Produkt enthalten, aber es wird von der Verwendung dieser API abgeraten.

Die in WebSphere Application Server bereitgestellten APIs sind eine Kombination aus Standard-JAAS-APIs und einer Produktimplementierung von Standard-JAAS-Schnittstellen.

[z/OS]Die von WebSphere Application Server für z/OS bereitgestellten und unterstützten APIs sind eine Kombination aus Standard-JAAS-APIs und einer Produktimplementierung der Standard-JAAS-Schnittstellen mit geringfügigen Erweiterungen.

Die folgenden Informationen sind lediglich eine Zusammenfassung. Ausführliche Informationen finden Sie in der JAAS-Dokumentation für Ihre Plattform auf der Webseite http://www.ibm.com/developerworks/java/jdk/security/.

  • APIs für programmgesteuerte Anmeldung:
    • javax.security.auth.login.LoginContext
    • Schnittstelle javax.security.auth.callback.CallbackHandler: WebSphere Application Server stellt die folgende Implementierung der Schnittstelle javax.security.auth.callback.CallbackHandler bereit:
      com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl
      Ein CallbackHandler ohne Eingabeaufforderung. Die Anwendung fügt Basisauthentifizierungsdaten (Benutzer-ID, Kennwort und Sicherheitsbereich) oder Tokendaten in Anmeldemodule des Produkts ein. Diese API wird für die serverseitige Anmeldung empfohlen.
      [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl
      [AIX Solaris HP-UX Linux Windows][IBM i]Ein CallbackHandler mit Anmeldeaufforderung zum Erfassen von Basisauthentifizierungsdaten (Benutzer-ID, Kennwort und Sicherheitsbereich). Diese API wird für die clientseitige Anmeldung empfohlen.

      Wird diese API auf der Serverseite genutzt, wird der Server durch das Warten auf Eingaben blockiert.

      com.ibm.websphere.security.auth.callback.WSStdinCallbackHandlerImpl
      Ein CallbackHandler mit stdin-Anmeldeaufforderung zum Erfassen von Basisauthentifizierungsdaten (Benutzer-ID, Kennwort und Sicherheitsbereich). Diese API wird für die clientseitige Anmeldung empfohlen.
      Anmerkung: Wird diese API auf der Serverseite genutzt, wird der Server durch das Warten auf Eingaben blockiert.
    • Schnittstelle "javax.security.auth.callback.Callback":
      javax.security.auth.callback.NameCallback
      Von JAAS für die Übergabe des Benutzernamens an die Schnittstelle "LoginModules" bereitgestellt.
      javax.security.auth.callback.PasswordCallback
      Von JAAS für die Übergabe des Kennworts an die Schnittstelle "LoginModules" bereitgestellt.
      com.ibm.websphere.security.auth.callback.WSCredTokenCallbackImpl
      Vom Produkt für die Ausführung einer tokenbasierten Anmeldung bereitgestellt. Mit dieser API kann keine Anwendung eine Tokenbytefeldgruppe an die Schnittstelle "LoginModules" übergeben.
    • Schnittstelle "javax.security.auth.spi.LoginModule"

      WebSphere Application Server stellt eine LoginModules-Implementierung für die Anmeldung auf Client- und Serverseite bereit. Nähere Einzelheiten finden Sie im Artikel Programmgesteuerte Anmeldungen für JAAS (Java Authentication and Authorization Service) konfigurieren.

  • javax.security.Subject:
    [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.WSSubject
    [AIX Solaris HP-UX Linux Windows][IBM i]Vom Produkt bereitgestellte Erweiterung zum Aufrufen ferner J2EE-Ressourcen unter Verwendung der Berechtigungsnachweise im javax.security.Subject.
    [z/OS]com.ibm.websphere.security.auth.WSSubject
    [z/OS]Vom Produkt bereitgestellte Erweiterung zum Aufrufen ferner J2EE-Ressourcen unter Verwendung der Berechtigungsnachweise im javax.security.Subject.

    Eine Anwendung muss die Methode WSSubject.doAs für J2EE-Ressourcen aufrufen, auf die mit dem Subject zugegriffen werden soll, das durch den expliziten Aufruf eines WebSphere-Anmeldemoduls generiert wurde.

    com.ibm.websphere.security.cred.WSCredential
    Nach erfolgreicher JAAS-Anmeldung mit der LoginModules-Schnittstelle von WebSphere Application Server wird im Subject ein Berechtigungsnachweis com.ibm.websphere.security.cred.WSCredential erstellt und gespeichert.
    com.ibm.websphere.security.auth.WSPrincipal
    Ein authentifizierter Principal, der in einem von der LoginModules-Schnittstelle von WebSphere Application Server authentifizierten Subject erstellt und gespeichert wird.

Vorgehensweise

  1. [AIX Solaris HP-UX Linux Windows][IBM i]Das folgende Beispiel veranschaulicht eine programmgesteuerte Anmeldung mit den CORBA-basierten APIs für programmgesteuerte Anmeldung: Die CORBA-basierten APIs für programmgesteuerte Anmeldung werden durch die JAAS-Anmeldung ersetzt.
    Anmerkung: Die im folgenden Beispiel verwendete API "LoginHelper" ist seit WebSphere Application Server Version 9.0 als veraltet gekennzeichnet und wird in einem der künftigen Releases entfernt. Es wird empfohlen, die JAAS-APIs für programmgesteuerte Anmeldung zu verwenden, die im nächsten Schritt gezeigt werden:
    public class TestClient {
    ...
    private void performLogin() {
    // ID und Kennwort des Benutzers abrufen.
    String userid = customGetUserid();
    String password = customGetPassword();
    
    // Neuen Sicherheitskontext zum Speichern von Authentifizierungsdaten erstellen.
    LoginHelper loginHelper = new LoginHelper();
    try  { 
    // ID und Kennwort des Benutzers für Authentifizierung angeben.
    org.omg.SecurityLevel2.Credentials credentials = 
    loginHelper.login(userid, password);
    
    // Neue Berechtigungsnachweise für alle weiteren Aufrufe verwenden.
    loginHelper.setInvocationCredentials(credentials);
    // Benutzernamen aus Berechtigungsnachweisen abrufen, um dem
    // Benutzer mitteilen zu können, dass die Anmeldung erfolgt ist.
    
    String username = loginHelper.getUserName(credentials);
    System.out.println("Sicherheitskontext definiert für Benutzer: "+username);
    } catch (org.omg.SecurityLevel2.LoginFailed e) {
    // Handhabung der Ausnahme LoginFailed.
    }
    }
    ...
    }
  2. Verwenden Sie für die Migration der CORBA-basierten APIs für programmgesteuerte Anmeldung auf die JAAS-APIs für programmgesteuerte Anmeldung das folgende Beispiel.

    Beim folgenden Beispiel wird vorausgesetzt, dass der Anwendungscode die erforderlichen Java-2-Sicherheitsberechtigungen hat. Weitere Informationen finden Sie in den Artikeln Programmgesteuerte Anmeldungen für JAAS (Java Authentication and Authorization Service) konfigurieren, Systemressourcen und APIs (Java-2-Sicherheit) für die Entwicklung von Anwendungen schützen sowie in der JAAS-Dokumentation auf der Webseite http://www.ibm.com/developerworks/java/jdk/security/.

    public class TestClient {
    ...
    private void performLogin() {
    // Erstellen eines neuen JAAS LoginContext.
    javax.security.auth.login.LoginContext lc = null;
    
    try  { 
    // Abrufen der BasicAuth-Daten an der GUI-Eingabeaufforderung.
    lc = new javax.security.auth.login.LoginContext("WSLogin",
    new com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl());
    
    // Erstellen eines LoginContext und Angeben einer CallbackHandler-Implementierung.
    // Die CallbackHandler-Implementierung bestimmt die Erfassung der Authentifizierungsdaten.
    // In diesem Fall erfolgt die Erfassung über die Aufforderung zur Anmeldung.
    // Die Daten werden an das von "LoginModule" implementierte Authentifizierungsverfahren übergeben.
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: failed to instantiate a LoginContext and the exception: " 
    + e.getMessage());
    e.printStackTrace();
    
    // Die Berechtigung "createLoginContext" (javax.security.auth.AuthPermission) wurde der
    // Anwendung nicht gewährt, oder die JAAS-Anmeldekonfiguration ist nicht definiert.
    }
    
    if (lc != null)
    try  { 
    lc.login();  // Anmeldung ausführen
    javax.security.auth.Subject s = lc.getSubject();
    // Authentifiziertes Subjekt abrufen
    
    // Mit authentifiziertem Subject J2EE-Ressourcen aufrufen
    com.ibm.websphere.security.auth.WSSubject.doAs(s,
    new java.security.PrivilegedAction() {
    public Object run() {
    try  { 
    bankAccount.deposit(100.00);  // bankAccount ist eine geschützte EJB
    } catch (Exception e)  {
    System.out.println("FEHLER: Kein Zugriff auf die EJB-Ressource. Ausnahme: " 
    + e.getMessage());
    e.printStackTrace();
    }
    return null;
    }
    }
    );
    
    // Namen des Principal vom Subjekt abrufen, um dem Benutzer
    // mitteilen zu können, dass die Anmeldung erfolgt ist.
    // Es sollte nur einen WSPrincipal geben.
    java.util.Set ps = 
    s.getPrincipals(com.ibm.websphere.security.auth.WSPrincipal.class);
    java.util.Iterator it = ps.iterator();
    while (it.hasNext()) {
    com.ibm.websphere.security.auth.WSPrincipal p =
    (com.ibm.websphere.security.auth.WSPrincipal) it.next();
    System.out.println("Principal: " + p.getName());
    }
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("FEHLER: Anmeldung mit folgender Ausnahme gescheitert: " + e.getMessage());
    e.printStackTrace();
    
    // Gescheiterte Anmeldung. Es kann Logik für erneute Anmeldung eingefügt werden.
    }
    }
    ...
    }

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=tsec_migratecorba
Dateiname:tsec_migratecorba.html