Extraction du sujet de l'appelant de l'unité d'exécution pour JAAS

Le sujet de l'appelant (ou "sujet reçu") contient les informations d'authentification utilisées dans l'appel pour cette requête. Ce sujet est renvoyé après émission de l'interface de programmation d'application WSSubject.getCallerSubject afin d'éviter d'y remplacer des objets existants. Le sujet est signalé comme étant en lecture seule. Cette interface permet d'accéder au justificatif WSCredential de sorte à pouvoir placer ou définir des données dans le hashmap au sein du justificatif.

Avant de commencer

Vous devez disposer des droits d'accès de la sécurité Java™ 2 suivants pour exécuter cette API : permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject";.

Si vous utilisez le mécanisme d'authentification Kerberos, la règle KDC active la délégation Kerberos et le client dispose d'un ticket Kerberos pouvant être transféré, le sujet dispose des tickets Kerberos du client et des données d'identification déléguées GSS. Vous pouvez utiliser les API pour accéder aux tickets Kerberos et aux données d'identification déléguées GSS.

Pourquoi et quand exécuter cette tâche

La majorité des données présentes dans le sujet n'est pas propagée en aval à un autre serveur. Seul le jeton de justificatif présent dans le justificatif WSCredential est propagé en aval et un nouveau sujet de l'appelant est généré.

Procédure

  1. Extrayez le sujet de l'appelant.
    caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
  2. Accédez aux données d'identification WSCredential.
    caller_cred = caller_subject.getPublicCredentials(com.ibm.websphere
    .security.cred.WSCredential.class).iterator().next();
  3. Placez ou définissez les données dans la mappe de table des justificatifs.
    String CALLERDATA = (String) caller_cred.get ("MYKEY");	
    System.out.println("My data from the Caller credential is:  " + CALLERDATA);
  4. Accédez aux tickets Kerberos. Par exemple :
            java.util.Set kerberosTickets = subject.getPrivateCredentials(KerberosTicket.class);
            if ( kerberosTickets.size() > 1) 
                System.out.println("Multiple Kerberos tickets found");
            Iterator credIter = kerberosTickets.iterator();
  5. Accédez au données d'identification GSS. Par exemple :
       GSSCredential gssCred = subject.getPrivateCredentials(GSSCredential.class).iterator().next();

Exemple

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("Mes données du justificatif Caller sont :  " + CALLERDATA); } }
catch (WSSecurityException e) { // log error } catch (Exception e) { // log error }


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_getcaller
Nom du fichier : tsec_getcaller.html