Beispiel: Angepasstes Anmeldemodul AuthorizationToken

Diese Datei zeigt, wie festgestellt wird, ob es sich um eine Erstanmeldung oder eine Anmeldung durch Weitergabe handelt.

Informationen zu den Aktionen während der Initialisierung, Anmeldung und Festschreibung finden Sie unter "Angepasste Anmeldemodule für eine Systemanmeldekonfiguration für JAAS entwickeln".

public customLoginModule() 
{
		public void initialize(Subject subject, CallbackHandler callbackHandler, 
     Map sharedState, Map options)
	{
				_sharedState = sharedState;
	}

		public boolean login() throws LoginException 
	{
				// Prüft mit WSTokenHolderCallback, ob es sich um eine
  // Erstanmeldung oder eine Anmeldung durch Weitergabe handelt.
				Callback callbacks[] = new Callback[1];
				callbacks[0] = new WSTokenHolderCallback("Authz Token List: ");
	        
		try
		{
			callbackHandler.handle(callbacks);
		} 
		catch (Exception e) 
		{
						// Ausnahmebehandlung
		} 
            
				// Empfängt die ArrayList von TokenHolder-Objekten (die serialisierten Token)
		List authzTokenList = ((WSTokenHolderCallback) callbacks[0]).getTokenHolderList();
        
				if (authzTokenList != null)
		{
						// Iteriert durch die Liste und sucht das angepasste Token
			for (int i=0; i
						for (int i=0; i<authzTokenList.size(); i++)
			{
								TokenHolder tokenHolder = (TokenHolder)authzTokenList.get(i);

          					// Sucht nach Namen und Version Ihrer kundenspezifischen
     // AuthorizationToken-Implementierung
								if (tokenHolder.getName().equals("com.ibm.websphere.security.token.
             CustomAuthorizationTokenImpl") && tokenHolder.getVersion() == 1)
				{
            						// Übergibt die Bytes zum Entserialisieren an den kundenspezifischen
      // AuthorizationToken-Konstruktor
										customAuthzToken = new 									
						com.ibm.websphere.security.token.CustomAuthorizationTokenImpl(
                   tokenHolder.getBytes());

				}
			}
		}
		else
     // Dies ist keine Anmeldung durch Weitergabe. Erstellen einer neuen
     // Instanz der AuthorizationToken-Implementierung.
		{
       // Ruft den Principal aus dem Standard-AuthenticationToken ab. Dieser
       // muss für alle Token gültig sein.
						defaultAuthToken = (com.ibm.wsspi.security.token.AuthenticationToken) 
				sharedState.get(com.ibm.wsspi.security.auth.callback.Constants.WSAUTHTOKEN_KEY);
						String principal = defaultAuthToken.getPrincipal();

          // Fügt ein neues angepasstes Berechtigungstoken hinzu. Dies
   // ist eine Erstanmeldung. 
   // Übergibt den Principal an den Konstruktor
						customAuthzToken = new com.ibm.websphere.security.token.
           CustomAuthorizationTokenImpl(principal);

						// Fügt alle Anfangsattribute hinzu
						if (customAuthzToken != null)
			{
									customAuthzToken.addAttribute("key1", "value1");
									customAuthzToken.addAttribute("key1", "value2");
									customAuthzToken.addAttribute("key2", "value1");
									customAuthzToken.addAttribute("key3", "something different");
			}
		}

     // Anmerkung: Sie können das Token während der Commit-Operation dem Subject
     // hinzufügen, falls während der Anmeldung ein Fehler auftritt.
	}

		public boolean commit() throws LoginException 
	{
		if (customAut		// (hzToken != null)
		{
						// Setzt das customAuthzToken-Token im Subject
			try
			{
				public final AuthorizationToken customAuthzTokenPriv = customAuthzToken;
          // Fügen Sie dies in einen doPrivileged-Codeblock ein, damit der
          // Anwendungscode keine weiteren Berechtigungen hinzufügen muss.
								java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() 
				{
										public Object run() 
					{
						try
						{
                 // Fügt das angepasste Berechtigungstoken hinzu, falls
                 // es nicht null und noch nicht im Subject enthalten ist.
                          												if ((customAuthzTokenPriv != null) && 			
									(!subject.getPrivateCredentials().contains(customAuthzTokenPriv)))
							{
								subject.getPrivateCredentials().add(customAuthzTokenPriv);
							}
						} 
						catch (Exception e) 
						{
									throw new WSLoginFailedException (e.getMessage(), e);
						}

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

		// Variablen für das Anmeldemodul definieren
		com.ibm.wsspi.security.token.AuthorizationToken customAuthzToken = null;
		com.ibm.wsspi.security.token.AuthenticationToken defaultAuthToken = null;
		java.util.Map _sharedState = 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_custauthtokenlmodule
Dateiname:xsec_custauthtokenlmodule.html