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

  1. Rufen Sie das Caller-Subject ab.
    caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
  2. Rufen Sie den WSCredential-Berechtigungsnachweis auf.
    caller_cred = caller_subject.getPublicCredentials(com.ibm.websphere
    .security.cred.WSCredential.class).iterator().next();
  3. Speichern oder definieren Sie Daten in der Hashtabelle im Berechtigungsnachweis.
    String CALLERDATA = (String) caller_cred.get ("MYKEY"); 		
    System.out.println("My data from the Caller credential is:  " + CALLERDATA);
  4. Rufen Sie die Kerberos-Tickets auf. Beispiel:
            java.util.Set kerberosTickets = subject.getPrivateCredentials(KerberosTicket.class);
            if ( kerberosTickets.size() > 1) 
                System.out.println("Multiple Kerberos tickets found");
            Iterator credIter = kerberosTickets.iterator();
  5. Greifen Sie auf den GSS-Berechtigungsnachweis zu. Beispiel:
       GSSCredential gssCred = subject.getPrivateCredentials(GSSCredential.class).iterator().next();

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 }


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_getcaller
Dateiname:tsec_getcaller.html