Geração de tokens SPNEGO para solicitações JAX-WS de saída usando Ligações do conjunto de política do cliente
Os clientes JAX-WS podem se autenticar usando uma série de diferentes mecanismos de autenticação do transporte HTTP.
Além de se autenticarem em aplicativos do provedor de serviços
por meio de autenticação WS-Security, os clientes JAX-WS podem se autenticar usando
vários mecanismos de autenticação de transporte HTTP, incluindo
o seguinte:
- Autenticação básica usando as propriedades nas ligações de transporte HTTP.
- Autenticação do Cliente SSL/TLS usando as ligações de transporte SSL.
- Autenticação SPNEGO usando propriedades customizadas nas ligações de transporte.
Há 5 variações diferentes para se obter as credenciais
Kerberos usadas para o token SPNEGO de saída:
- Um token solicitado que usa credenciais do Windows Native. Quando o processo do WebSphere Java™ estiver em execução em um sistema Windows com um ID do usuário que possui credenciais Kerberos, o sistema operacional Windows manterá um Kerberos Ticket Granting Ticket (TGT) para esse usuário. O tempo de execução do cliente JAX-WS usa esse TGT para solicitar um token SPNEGO que pode ser solicitado para um ServicePrincipalName (SPN) para o sistema de serviço de destino.
- Um token solicitado que usa credenciais Kerberos em cache. Em um sistema no qual um usuário efetuou login, geralmente utilizando ferramentas como a kinit do Java, as credenciais Kerberos do usuário são armazenadas em um arquivo de cache denominado krb5cc_<userid>. Como alternativa, um arquivo keytab que contém uma chave do usuário pode ser criado usando várias ferramentas como o Microsoft ktpass ou o Java ktab. Esses arquivos contêm uma cópia da chave Kerberos do usuário que pode ser usada para obter um Ticket Granting Ticket (TGT) para esse ID do usuário. O tempo de execução do cliente JAX-WS usa esse TGT para solicitar um token SPNEGO que pode ser solicitado para um ServicePrincipalName (SPN) para o sistema de serviço de destino. O processo do WebSphere deve ser configurado para usar o arquivo krb5cc_<userid ou arquivo keytab. O UserPrincipalName (UPN) para a credencial em cache no arquivo também deve ser fornecido.
- Um token solicitado que usa uma credencial Kerberos com um ID do usuário e senha. Nesse cenário, o tempo de execução do cliente JAX-WS se conecta ao servidor Kerberos Key Distribution com o ID do usuário e a senha fornecidos para obter um Ticket Granting Ticket (TGT). A classe então solicitará o token SPNEGO com esse TGT. O tempo de execução do cliente JAX-WS solicita o ServicePrincipalName (SPN) para o sistema de serviço de destino, e o ID do usuário e senha.
- Um token solicitado usando uma credencial Kerberos existente em
um Java Subject. O Subject
pode obter uma credencial Kerberos de uma das seguintes maneiras:
- O usuário que efetuou login em um aplicativo da web usando a autenticação da web SPNEGO de entrada. Somente a autenticação da web SPNEGO precisa ser configurada e ativada no WebSphere Application Server para essa opção. O ID do usuário Kerberos que está associado ao serviço SPNEGO de entrada deve ser ativado para a delegação Kerberos completa.
- Uma solicitação de serviço da web JAX-WS foi recebida contendo um token WS-Security Kerberos. O ID do usuário Kerberos que está associado ao serviço da web de entrada deve ser ativado para a delegação Kerberos completa.
- O usuário que efetuou login com o ID do usuário e senha, e o WebSphere Application Server que foi configurado para autenticação LTPA e Kerberos.
- Uma solicitação de serviço da web JAX-WS foi recebida contendo um token de nome do usuário com uma senha, e o WebSphere Application Server foi configurado para autenticação LTPA e Kerberos.
Todas as 5 das variações anteriores que podem ser usadas
para obter as credenciais Kerberos que são usadas para o token SPNEGO de
saída requerem que as propriedades customizadas sejam definidas nas ligações HTTP,
nas ligações do conjunto de políticas do cliente.
Nome da Propriedade | Valor | Comments |
---|---|---|
com.ibm.websphere.webservices.spnego.enabled | Booleano | Deve ser configurado para true para ativar qualquer uma das opções de autenticação SPNEGO no tempo de execução de ligação do cliente JAX-WS. |
com.ibm.websphere.webservices.spnegoOutboundSPN | Sequência de caracteres | Deve ser configurado como o Nome principal do serviço para o provedor do Serviço da web. |
com.ibm.websphere.webservices.spnegoLoginMechanism | Sequência de caracteres | Deve ser GSSUP, native, caller ou keytab. |
com.ibm.websphere.webservices.JAASConfigName | Sequência de caracteres | Quando spnegoLoginMechanism é configurado como o keytab, essa propriedade deve ser configurada como Configuração de login de JAAS que identifica o arquivo de keytab a ser usado. |
com.ibm.websphere.webservices.spnegoUPN | Sequência de caracteres | Quando spnegoLoginMechanism é configurado como o keytab, essa propriedade deve ser configurada como o Nome principal do usuário da chave no keytab a ser usado. |
com.ibm.websphere.webservices.spnegoOutboundLifeTime | Número Inteiro | Se não for especificado, o token SPNEGO será solicitado para tempo de vida Infinito. |
com.ibm.websphere.webservices.spnegoOutboundDelegate | Booleano | Se configurado como true e a conta SPN de serviço da web for ativada para delegação, então o token SPNEGO enviado para o serviço da web poderá ser delegado. |
Quando a propriedade spnegoLoginMechanism for configurada como GSSUP, o ID do usuário e a senha serão obtidos a partir da autenticação básica para as propriedades de solicitações do serviço de saída.
Quando a propriedade spnegoLoginMechanism for configurada como caller, a credencial Kerberos será obtida a partir do Caller Subject.
Quando a propriedade spnegoLoginMechanism for configurada como Native, as credenciais Kerberos serão obtidas a partir do sistema operacional Windows.
- Notas para credenciais Native
- O cache de credenciais Microsoft Kerberos
Logon Session (MSLSA) dependem da capacidade para extrair o ticket Kerberos inteiro, incluindo a chave de sessão a partir do cache de credenciais Kerberos Logon Session (LSA). Em uma tentativa de aumentar a segurança, a Microsoft implementou um recurso pelo qual ela não exporta mais as chaves de sessão para Ticket
Getting Tickets, o que pode fazer com que elas sejam inutilizáveis para o IBM® JGSS quando forem feitas tentativas de solicitar mais tickets de serviços. Esse novo recurso foi visto no Windows 2003
Server e em sistemas posteriores. A Microsoft forneceu a seguinte chave de registro
para desativar este novo recurso:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters AllowTGTSessionKey = 0x01 (DWORD)
- Requisitos no arquivo de configuração do Kerberos
- O arquivo de configuração Kerberos deve ser configurado corretamente, independentemente
da abordagem.
- O modo como o processo do WebSphere atinge o Key Distribution Center (KDC) deve ser configurado adequadamente por meio das sub-rotinas [realms] e [domain_realm].
- Os tipos de criptografia a serem usados na sub-rotina [libdefaults] devem especificar os valores default_tkt_enctypes e default_tgs_enctypes.
- A sub-rotina [libdefaults] deve incluir o seguinte:
- forwardable = true
- renewable = true
- noaddresses = true
- A sub-rotina [libdefaults] deve definir um valor clockskew razoável.