Beispiel: Beispielanmeldekonfiguration für RMI_OUTBOUND

Dieses Beispiel zeigt eine Anmeldekonfiguration für RMI_OUTBOUND, die die Realmnamen von zwei Servern zuordnet.

public customLoginModule() 
{
	public void initialize(Subject subject, CallbackHandler callbackHandler,
     Map sharedState, Map options)
	{
     		// (Weitere Informationen zu den Aktionen, die während der Initialisierung vorgenommen
  // werden müssen, finden Sie im Abschnitt
     // Angepasste Anmeldemodule für eine Systemanmeldekonfiguration für JAAS entwickeln.)
	}

		public boolean login() throws LoginException 
	{
     // (Nähere Informationen zu den während der Anmeldung auszuführen Aktionen finden Sie im Artikel
     // Angepasste Anmeldemodule für eine Systemanmeldekonfiguration für JAAS entwickeln.)

				// Ruft das WSProtocolPolicyCallback-Objekt ab
				Callback callbacks[] = new Callback[1];
						callbacks[0] = new com.ibm.wsspi.security.auth.callback.
          WSProtocolPolicyCallback("Protocol Policy Callback: ");
	        
		try
		{
			callbackHandler.handle(callbacks);
		} 
		catch (Exception e) 
		{
						// Ausnahme behandeln
		} 
            
     // Empfängt das RMI-Richtlinienobjekt (CSIv2), um den Zielrealm
     // basierend auf den Informationen aus der IOR zu überprüfen.
     // Anmerkung: Dieses Objekt kann für weitere Sicherheitsprüfungen verwendet werden.
     // Nähere Informationen finden Sie in der API-Dokumentation.
				csiv2PerformPolicy = (CSIv2PerformPolicy) ((WSProtocolPolicyCallback)callbacks[0]).
        getProtocolPolicy();
        
		  		// Prüft, ob die Realms übereinstimmen. Wenn die Realms nicht übereinstimmen,
    // dann anmelden, um eine Zuordnung durchzuführen.
				if (!csiv2PerformPolicy.getTargetSecurityName().equalsIgnoreCase(csiv2PerformPolicy.
         getCurrentSecurityName()))
		{
			try
			{
								// Zuordnung des angepassten Realms zu Benutzer-ID und Kennwort
								MyBasicAuthDataObject myBasicAuthData = MyMappingLogin.lookup 				
																				(csiv2PerformPolicy.getTargetSecurityName());

          // Erstellt den Anmeldekontext mit den aus der angepassten Zuordnung
          // erfassten Basisauthentifizierungsdaten
										javax.security.auth.login.LoginContext ctx = new LoginContext("WSLogin",
												new WSCallbackHandlerImpl(myBasicAuthData.userid, 
																csiv2PerformPolicy.getTargetSecurityName(), 
                    myBasicAuthData.password));

										// Startet die Anmeldung
										ctx.login();

             // Ruft das Subject aus dem Kontext ab. Dieses Subject ersetzt
             // das in der Festschreibungsphase übergebene Subject.
										basic_auth_subject = ctx.getSubject();
				} 
								catch (javax.security.auth.login.LoginException e)
				{
										throw new com.ibm.websphere.security.auth.
               WSLoginFailedException (e.getMessage(), e);
				}
		}
	}

		public boolean commit() throws LoginException 
	{
     		// (Weitere Informationen zu den Aktionen, die während der Festschreibung vorgenommen
  // werden müssen, finden Sie im Abschnitt      // Angepasste Anmeldemodule für eine Systemanmeldekonfiguration für JAAS entwickeln.)

		if (basic_auth_subject != null)
		{
       // Entfernt alles aus dem aktuellen Subject und fügt alles aus dem
       // basic_auth_subject hinzu.
			try
			{
								public final Subject basic_auth_subject_priv = basic_auth_subject;
          // Führen Sie diesen Schritt in einem doPrivileged-Block aus, damit der
          // Anwendungscode keine zusätzlichen Berechtigungen hinzufügen muss.
								java.security.AccessController.doPrivileged(new java.security.
             PrivilegedExceptionAction() 
				{
										public Object run() throws WSLoginFailedException
					{
               // Entfernt alle benutzerspezifischen Daten aus dem aktuellen
               // abgehenden Subject. Es ist ein temporäres Subject für diesen
               // speziellen Aufruf. Das Subject im Thread ist also nicht betroffen.
               // Sie können alle angepassten Objekte behalten, die Sie
               // an das Subject weitergeben möchten.
               // Dieses Beispiel entfernt alle Daten und fügt nur die neuen
               // Informationen wieder hinzu.
						try
						{
						 						 subject.getPublicCredentials().clear();
						 						 subject.getPrivateCredentials().clear();
						 						 subject.getPrincipals().clear();
						} 
						catch (Exception e) 
						{
						 		throw new WSLoginFailedException (e.getMessage(), e);
						}

               // Fügt alle Daten aus dem basic_auth_subject dem Subject für die Anmeldung hinzu.
               // Damit ist die Zuordnung des neuen Benutzers abgeschlossen.
						try
						{
						 						 subject.getPublicCredentials().addAll(basic_auth_subject.
                   getPublicCredentials());
						 						 subject.getPrivateCredentials().addAll(basic_auth_subject.
                   getPrivateCredentials());
						 						 subject.getPrincipals().addAll(basic_auth_subject.
                   getPrincipals());
						} 
						catch (Exception e) 
						{
						 		throw new WSLoginFailedException (e.getMessage(), e);
						}

						return null;
					}
				});
			}
						catch (PrivilegedActionException e)
			{
								throw new WSLoginFailedException (e.getException().getMessage(), 
             e.getException());
			}
		}
	}

		// Variablen für das Anmeldemodul definieren
		com.ibm.wsspi.security.csiv2.CSIv2PerformPolicy csiv2PerformPolicy = null;
		javax.security.auth.Subject basic_auth_subject = null;
}

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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