Beispiel: Mit der WSLogin-Konfiguration ein Subject für die Basisauthentifizierung erstellen

Dieses Beispiel veranschaulicht, wie Sie die WSLogin-Anwendungsanmeldekonfiguration in einer J2EE-Anwendung (Java™ 2 Platform, Enterprise Edition) verwenden, um sich anzumelden und ein Subject-Objekt abzurufen, das die Benutzer-ID und das Kennwort des Zielrealms enthält.

	javax.security.auth.Subject subject = null;

try
{
  // Mit der Anmeldekonfiguration WSLogin einen Anmeldekontext erstellen und eine
  // Benutzer-ID, einen Zielrealm und ein Kennwort angeben. Anmerkung: Wenn
  // target_realm_name mit dem aktuellen Realm identisch ist, wird ein
  // authentifiziertes Subject erstellt. Sollten sich target_realm_name und
  // aktueller Realm unterscheiden, wird ein nicht validiertes Subject für
  // die Basisauthentifizierung erstellt. Dieses nicht validierte Subject
  // wird erstellt, damit Sie eine Anforderung an einen anderen Zielrealm
  // mit gültigen Sicherheitsnachweisen für diesen Realm senden können.
							javax.security.auth.login.LoginContext ctx = new LoginContext("WSLogin",
						new WSCallbackHandlerImpl("userid", "target_realm_name", "password"));

  // Anmerkung: Im folgenden Code wird eine Alternative vorgestellt, die die Benutzer-ID
  // und das Kennwort für den Zielrealm validiert. Es wird ein ferner Aufruf an
  // den Zielserver abgesetzt, der true zurückgibt, wenn Benutzer-ID und Kennwort
  // gültig sind, und false zurückgibt, wenn Benutzer-ID und Kennwort ungültig sind.
  // Sollte false zurückgegeben werden, wird eine Ausnahme des Typs
  // WSLoginFailedException ausgelöst. Sie können diese Ausnahme abfangen und
  // die Anforderung wiederholen oder die weitere Verarbeitung der Anforderung,
  // indem Sie zulassen, dass die Ausnahme ausgegeben wird.

  // Alternativer Anmeldekontext, der die Benutzer-ID und das Kennwort
  // für den Zielrealm validiert

				/****  derzeit auf Kommentar gesetzt ****
				java.util.Map appContext = new java.util.HashMap();
		            		            appContext.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
	                	           "com.ibm.websphere.naming.WsnInitialContextFactory");
		            		            appContext.put(javax.naming.Context.PROVIDER_URL, 
		                           		                           "corbaloc:iiop:target_host:2809");

							javax.security.auth.login.LoginContext ctx = new LoginContext("WSLogin",
						new WSCallbackHandlerImpl("userid", "target_realm_name", "password", appContext));
				**** derzeit auf Kommentar gesetzt ****/

							// Startet die Anmeldung
							ctx.login();

				// Subject aus dem Kontext abrufen
				subject = ctx.getSubject();
	} 
					catch (javax.security.auth.login.LoginException e)
	{
				throw new com.ibm.websphere.security.auth.WSLoginFailedException (e.getMessage(), e);
	}

	if (subject != null) {
				// Berechtigte Aktion definieren, die die ferne Anforderung kapselt
java.security.PrivilegedAction myAction = java.security.PrivilegedAction()
		{
								public Object run() 
			{
								// Annehmen, dass bereits ein Proxy definiert ist. Diese Beispielmethode
    // gibt eine Zeichenfolge zurück.
								return proxy.remoteRequest();
			}
		}); 

				// Startet die Aktion mit dem Subject für die Basisauthentifizierung, das für
  // die Sicherheitsanforderungen des Zielrealm benötigt wird.
				String myResult = (String) com.ibm.websphere.security.auth.WSSubject.doAs 
        (subject, myAction);	
	}

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_wsloginbasicauth
Dateiname:xsec_wsloginbasicauth.html