Beispiel: Angepasstes Anmeldemodul mit SSO-Token

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

Informationen zur Initialisierung und zu den Aktionen während der Anmeldung und der 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)
		{
				// Behandlung der Ausnahme
		} 
            
				// 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 den Namen und die Version Ihrer
          // SingleSignonToken-Implementierung
								if (tokenHolder.getName().equals("myCookieName") 
              && tokenHolder.getVersion() == 1)
				{
											// Übergibt die Bytes zum Entserialisieren an den kundenspezifischen
      // SingleSignonToken-Konstruktor
										customSSOToken = new 									
						com.ibm.websphere.security.token.CustomSingleSignonTokenImpl
                   (tokenHolder.getBytes());

				}
			}
		}
		else 
          // Dies ist keine Anmeldung durch Weitergabe. Erstellen Sie eine neue
          // Instanz der SingleSignonToken-Implementierung.
		{
       // Ruft den Principal aus dem Standard-SingleSignonToken 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 benuterdefiniertes SSO-Token hinzu. Dies
   // ist eine Erstanmeldung.        
   // Übergeben des Principal an den Konstruktor
						customSSOToken = new com.ibm.websphere.security.token.
           CustomSingleSignonTokenImpl(principal);

						// Anfangsattribute hinzufügen
					if (customSSOToken != null)
			{
								customSSOToken.addAttribute("key1", "value1");
								customSSOToken.addAttribute("key1", "value2");
								customSSOToken.addAttribute("key2", "value1");
								customSSOToken.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 (customSSOToken != null)
		{
						// Legt das customSSOToken-Token im Subject fest
			try 
			{
								public final SingleSignonToken customSSOTokenPriv = customSSOToken;
          // 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 SSO-Token hinzu, wenn es nicht null und
                 //  noch nicht im Subject enthalten ist.
                          												if ((customSSOTokenPriv != null) &&
																		(!subject.getPrivateCredentials().
                          contains(customSSOTokenPriv)))
							{
																subject.getPrivateCredentials().
                      add(customSSOTokenPriv);
							}
						} 
						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.SingleSignonToken customSSOToken = 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_custssotokenlmodule
Dateiname:xsec_custssotokenlmodule.html