Caller-Subject aus dem Thread für JAAS abrufen
Das Caller-Subject (oder "empfangene Subject") enthält die Benutzerauthentifizierungsdaten, die im Aufruf für diese Anforderung enthalten sind. Das Subject wird nach der Ausführung der API "WSSubject.getCallerSubject" zurückgegeben, damit die darin enthaltenden Objekte nicht ersetzt werden. Es ist schreibgeschützt. Mit dieser API können Sie auf das WSCredential-Objekt zugreifen, um Daten in der Hash-Zuordnung im Berechtigungsnachweis zu speichern oder zu setzen.
Vorbereitende Schritte
Sie benötigen die folgenden Berechtigungen für die Java-2-Sicherheit, um diese API ausführen zu können: permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject";.
Wenn Sie die Kerberos-Authentifizierung verwenden, ermöglicht die KDC-Richtlinie die Kerberos-Delegierung. Der Client verfügt in dem Fall über ein Kerberos-Ticket, das weitergeleitet werden kann. Das Subject verfügt über die Client-Kerberos-Tickets und den GSS-Berechtigungsnachweis für Delegierung. Für den Zugriff auf die Kerberos-Tickets und den GSS-Berechtigungsnachweis für Delegierung können Sie APIs nutzen.
Informationen zu diesem Vorgang
Die meisten Daten im Subject werden nicht an nachgeschaltete Server weitergegeben. Nur das Berechtigungstoken im Berechtigungsnachweis "WSCredential" wird an nachgeschaltete Server weitergegeben, und es wird ein neues Caller-Subject generiert.
Vorgehensweise
Beispiel
try { javax.security.auth.Subject caller_subject; com.ibm.websphere.security.cred.WSCredential caller_cred;
caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
if (caller_subject != null) { caller_cred = caller_subject.getPublicCredentials
(com.ibm.websphere.security.cred.WSCredential.class).iterator().next();
String CALLERDATA = (String) caller_cred.get ("MYKEY");
System.out.println("My data from the Caller credential is: " + CALLERDATA); } }
catch (WSSecurityException e) { // log error } catch (Exception e) { // log error }