Obtención del sujeto del emisor de la hebra para JAAS

El sujeto del emisor (o el "sujeto recibido") contiene la información de autenticación del usuario que se utiliza en la llamada para esta petición. Este sujeto se devuelve después de emitir la interfaz de programación de aplicaciones WSSubject.getCallerSubject para que no se sustituyan los objetos existentes. El sujeto se marca como de sólo lectura. Esta API se puede utilizar para acceder a WSCredential, por lo que puede poner o establecer datos en el hashmap incluido en la credencial.

Antes de empezar

Necesita los siguientes permisos de seguridad de Java™ 2 para ejecutar esta API: permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject";.

Si utiliza el mecanismo de autenticación Kerberos, la política KDC habilita la delegación de Kerberos y el cliente tiene un ticket Kerberos reenviable, el sujeto tiene los tickets del cliente Kerberos y la credencial delegada GSS. Puede utilizar API para acceder a los tickets Kerberos y la credencial delegada GSS.

Acerca de esta tarea

La mayoría de los datos del sujeto no se propagan en sentido descendente a otro servidor. Sólo la señal de credencial incluida en WSCredential se propaga en sentido descendente y se genera un nuevo sujeto de emisor.

Procedimiento

  1. Obtenga el sujeto de emisor.
    caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
  2. Acceda a la credencial WSCredential.
    caller_cred = caller_subject.getPublicCredentials(com.ibm.websphere
    .security.cred.WSCredential.class).iterator().next();
  3. Ponga o establezca los datos en el hashmap de la credencial.
    String CALLERDATA = (String) caller_cred.get ("MYKEY");	
    System.out.println("My data from the Caller credential is:  " + CALLERDATA);
  4. Acceda a los tickets Kerberos. Por ejemplo:
            java.util.Set kerberosTickets = subject.getPrivateCredentials(KerberosTicket.class);
            if ( kerberosTickets.size() > 1) 
                System.out.println("Multiple Kerberos tickets found");
            Iterator credIter = kerberosTickets.iterator();
  5. Acceda a la credencial GSS. Por ejemplo:
       GSSCredential gssCred = subject.getPrivateCredentials(GSSCredential.class).iterator().next();

Ejemplo

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 }


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_getcaller
File name: tsec_getcaller.html