Obtendo o Subject do Responsável pela Chamada do Encadeamento para JAAS

O assunto Responsável pela Chamada (ou "assunto recebido") contém as informações de autenticação do usuário usadas na chamada desta solicitação. Este objeto é retornado após a emissão da API (Interface de Programação de Aplicativo) WSSubject.getCallerSubject para evitar a substituição de objetos existentes. O objeto está marcado como de leitura. Esta API pode ser utilizada para obter acesso à credencial WSCredential para que seja possível colocar ou definir dados no mapa de hash da credencial.

Antes de Iniciar

É necessário as permissões de segurança do Java™ 2 a seguir para executar esta API: permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject";.

Se você usar o mecanismo de autenticação Kerberos, a política KDC ativará a delegação do Kerberos e o cliente terá um bilhete Kerberos redirecionável, o assunto terá os bilhetes Kerberos do cliente e a credencial de delegação GSS. É possível usar APIs para acessar os bilhetes Kerberos e a credencial de delegação GSS.

Sobre Esta Tarefa

A maior parte dos dados do assunto não são propagados no recebimento de dados para outro servidor. Apenas o token da credencial na credencial WSCredential é propagado no recebimento de dados e é gerado um novo objeto do responsável pela chamada.

Procedimento

  1. Obtenha o assunto do responsável pela chamada.
    caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
  2. Acesse a credencial WSCredential.
    caller_cred = caller_subject.getPublicCredentials(com.ibm.websphere
    .security.cred.WSCredential.class).iterator().next();
  3. Coloque ou defina os dados no mapa de hash da credencial.
    String CALLERDATA = (String) caller_cred.get ("MYKEY");	
    System.out.println("My data from the Caller credential is:  " + CALLERDATA);
  4. Acesse os bilhetes Kerberos. Por Exemplo:
            java.util.Set kerberosTickets = subject.getPrivateCredentials(KerberosTicket.class);
            if ( kerberosTickets.size() > 1) 
                System.out.println("Vários bilhetes Kerberos localizados");
            Iterator credIter = kerberosTickets.iterator();
  5. Acesse a credencial GSS. Exemplo:
       GSSCredential gssCred = subject.getPrivateCredentials(GSSCredential.class).iterator().next();

Exemplo

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 }


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_getcaller
Nome do arquivo: tsec_getcaller.html