Bei einer Serveranwendung tritt die Anwendung als Anforderungskonsument auf, und der
Antwortgenerator wird im Java-EE-Container implementiert und ausgeführt.
Die Konsumentenkomponente für Web Services Security speichert die empfangenen Sicherheitstoken
im JAAS-Subjekt (Java Authentication and Authorization Service) des aktuellen Thread.
Sie können die Sicherheitstoken aus dem JAAS-Subjekt abrufen, das als lokaler Thread
im Container verwaltet wird.
Informationen zu diesem Vorgang
Diese Informationen gelten nur für JAX-RPC-Web-Services (Java™ API for XML-based RPC).
Die Sicherheitshandler sind für die Weitergabe von Sicherheitstoken
verantwortlich.
Diese Sicherheitstoken werden in den SOAP-Sicherheitsheader eingebunden und an nachgeschaltete Server
übergeben.
Die Sicherheitstoken sind in den Implementierungsklassen für
die Schnittstelle "com.ibm.wsspi.wssecurity.auth.token.Token" gekapselt.
Sie können die Daten für das Sicherheitstoken von einer Serveranwendung oder einer Clientanwendung
anfordern.
Führen Sie die folgenden Schritte aus, um die Daten für ein Sicherheitstoken von einer
Serveranwendung anzufordern:
Vorgehensweise
- Fordern Sie das JAAS-Subjekt des aktuellen Thread mit der Dienstprogrammklasse
WSSubject an. Wenn Sie in der Anzeige "Globale Sicherheit" der Administrationskonsole
die Java-2-Sicherheit aktivieren, wird der Zugriff auf das
JAAS-Subjekt verweigert, wenn der Anwendungscode nicht die Berechtigung
javax.security.auth.AuthPermission("wssecurity.getCallerAsSubject") hat.
Das folgende Codebeispiel zeigt, wie Sie das JAAS-Subjekt anfordern:
javax.security.auth.Subject subj;
try {
subj = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
} catch (com.ibm.websphere.security.WSSecurityException e) {
…
}
- Fordern Sie die privaten Berechtigungsnachweise aus dem Subjekt an. Nähere Informationen hierzu finden Sie in der Beschreibung der API-Klasse
com.ibm.websphere.security.auth.WSSubject im Information Center.
Zum Anzeigen dieser Informationen im Information Center klicken Sie auf
Referenz > Entwickler > API-Dokumentation > Anwendungsprogrammierschnittstellen. Klicken Sie unter
"Anwendungsprogrammierschnittstellen" auf
com.ibm.websphere.security.auth > WSSubject.
Achtung: Wenn
die Java-2-Sicherheit aktiviert ist, müssen Sie unter Umständen die Klasse AccessController
verwenden, um einen Sicherheitsverstoß zu vermeiden, der durch die Bearbeitung der Sicherheitsobjekte im
Java-EE-Container verursacht wird.
Das folgende Codebeispiel zeigt, wie Sie die Klasse
AccessController setzen und die privaten Berechtigungsnachweise anfordern:
Set s = (Set) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return subj.getPrivateCredentials();
}
});
- Suchen Sie die gewünschte Tokenklasse in den privaten Berechtigungsnachweisen. Sie können die Tokenklasse mit der Schnittstelle "java.util.Iterator" suchen.
Das folgende Beispiel zeigt, wie Sie ein UsernameToken mit eine bestimmten Token-ID
aus dem Sicherheitsheader anfordern. Sie können für den Abruf von Sicherheitstoken
auch andere Methodenaufrufe verwenden.
Nähere Informationen hierzu finden Sie in den API-Dokumenten für die Schnittstelle
"com.ibm.wsspi.wssecurity.auth.token.Token" und angepasste Tokenklassen.
com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
Iterator it = s.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (obj != null &&
obj instanceOf com.ibm.wsspi.wssecurity.auth.token.UsernameToken) {
unt =(com.ibm.wsspi.wssecurity.auth.token.UsernameToken) obj;
if (unt.getId().equals(“…”)) break;
else continue;
}
}
Ergebnisse
Sie haben die Sicherheitstoken aus dem JAAS-Subjekt in einer Serveranwendung abgerufen.