Validando o Token do Consumidor para Proteger a Autenticidade da Mensagem

As informações do consumidor de token são utilizadas no lado do consumidor para incorporar e validar o token de segurança. O token do Nome do Usuário, tokens X509 e tokens LTPA, por padrão, são utilizados para autenticidade de mensagem.

Antes de Iniciar

O processamento de token e a arquitetura de token que pode ser conectado no tempo de execução da Segurança de Serviços da Web reutilizam a mesma interface de token de segurança e Módulo de Login do Java™ Authentication and Authorization Service (JAAS) das APIs de Segurança de Serviços da Web (API WSS). A mesma implementação de criação e validação de token pode ser usada em ambos, API WSS e SPI WSS, no tempo de execução da Segurança de Serviços da Web.

Restrição: A interface com.ibm.wsspi.wssecurity.token.TokenConsumingComponent não é usado com os serviços da Web JAX-WS. Se estiver usando serviços da Web JAX-RPC, essa interface ainda é válida.

Observe que o elemento de nome da chave (KeyName) não é suportado porque não há asserção de política KeyName definida na especificação de rascunho OASIS Web Services Security.

Sobre Esta Tarefa

O manipulador de retorno de chamada JAAS (CallbackHandler) e o módulo de login do JAAS (LoginModule) são responsáveis pela criação do token de segurança no lado do gerador e pela validação (autenticação) do token de segurança no lado do consumidor.

Por exemplo, no lado do gerador, o token Username é criado pelo JAAS LoginModule e utilizando o JAAS CallbackHandler para transmitir os dados de autenticação. O JAAS LoginModule cria o objeto Username SecurityToken e o passa para o tempo de execução da Segurança de Serviços da Web.

Depois, no lado do consumidor, o formato XML do Token Username é passado para o JAAS LoginModule para validação ou autenticação e o JAAS CallbackHandler é usado para passar dados de autenticação do tempo de execução da Segurança de Serviços da Web para o LoginModule. Após a autenticação do token, um objeto Username SecurityToken é criado e passado para o tempo de execução da Segurança de Serviços da Web.

Nota: O WebSphere Application Server não suporta um módulo de login empilhável com a implementação de módulo de login padrão do WebSphere Application Server, ou seja, a inclusão do módulo de login antes ou após a implementação do módulo de login do WebSphere Application Server. Se você deseja empilhar as implementações de módulo de login, é necessário desenvolver os módulos de login necessários porque não há implementação padrão.
O pacote com.ibm.websphere.wssecurity.wssapi.token fornecido pelo WebSphere Application Server inclui suporte para estas classes:
  • Token de Segurança (SecurityTokenImpl)
  • Token de Segurança Binário (BinarySecurityTokenImpl)
Além disso, o WebSphere Application Server fornece as seguintes subinterfaces pré-configuradas para tokens de segurança:
  • Token de chave derivado
  • SCT (Security Context Token)
  • Token do Nome do Usuário
  • Propagação de token LTPA
  • Token LTPA
  • Token X509PKCS7
  • Token X509PKIPath
  • Token X509v3
  • Token Kerberos v5

O token do Nome do Usuário, os tokens X.509 e os tokens LTPA são utilizados, por padrão, para autenticidade da mensagem. O token de chave derivado e os tokens X.509 são utilizados, por padrão, para assinatura e criptografia.

A WSS API e a WSS SPI são suportadas apenas no cliente. Para especificar o tipo de token de segurança no lado do consumidor, também é possível configurar os conjuntos de política utilizando o console administrativo. Também é possível utilizar as WSS APIs ou os conjuntos de política para corresponder os tokens de segurança do gerador.

As implementações padrão do Módulo de Login e de Retorno de Chamada são designadas para serem utilizadas como um par, indicando tanto uma parte do gerador como uma de consumidor. Para utilizar as implementações padrão, selecione o token de segurança apropriado do gerador e do consumidor em um par. Por exemplo, selecione system.wss.generate.x509 no gerador de token e system.wss.consume.x509 no consumidor de token quando o token X.509 for necessário.

Para configurar o token de segurança do lado do consumidor, utilize a interface de consumidor de token pré-configurado apropriado a partir das WSS APIs para concluir as seguintes etapas do processo de configuração de token:

Procedimento

  1. Gere a instância wssFactory.
  2. Gere a instância wssConsumingContext.

    A interface WSSConsumingContext armazena os componentes para consumir WS-Security (Web Services Security), como verificação, decriptografia, token de segurança e registro de data e hora. Quando o método validate() for chamado, todos esses componentes serão validados.

  3. Crie componentes do lado do consumidor, como os objetos WSSVerification e WSSDecryption.
  4. Especifique uma configuração JAAS, especificando o nome da configuração de login do JAAS. A configuração do JAAS (Java Authentication and Authorization Service) especifica o nome da configuração do JAAS. A configuração do JAAS especifica como o token efetua login no lado do consumidor. Não remova as configurações de login do sistema ou do aplicativo predefinidas. No entanto, nessas configurações, é possível incluir nomes de classes de módulos e especificar a ordem na qual o WebSphere Application Server carrega cada módulo.
  5. Especifique um nome de classe do consumidor de token. O nome da classe do consumidor de token especifica as informações necessárias para validar o SecurityToken. O token do Nome do Usuário, os tokens X.509 e os tokens LTPA são utilizados, por padrão, para autenticidade da mensagem.
  6. Especifique as configurações para o manipulador de retorno de chamada, especificando um nome de classe do manipulador de retorno de chamada e também as chaves do manipulador de retorno de chamada. Esse nome de classe é o nome da classe de implementação do manipulador de retorno de chamada que é utilizado para o plug-in para a estrutura do token de segurança.
    O WebSphere Application Server fornece as seguintes implementações do manipulador de retorno de chamada padrão para o lado do consumidor:
    com.ibm.websphere.wssecurity.callbackhandler.PropertyCallback
    Esta classe é um retorno de chamada para manipular o par nome-valor nos elementos nos arquivos XMI de configuração WS-Security (Web Services Security).
    ccom.ibm.websphere.wssecurity.callbackhandler.UNTConsumeCallbackHandler
    Esta classe é um manipulador de retorno de chamada para o token de Nome do Usuário no lado do consumidor. Essa instância é utilizada para configuração no objeto WSSConsumingContext para validar um token do Nome do Usuário. Utilize esta implementação apenas para um aplicativo cliente Java EE (Java Platform, Enterprise Edition).
    com.ibm.websphere.wssecurity.callbackhandler.X509ConsumeCallbackHandler
    Essa classe é um manipulador de retorno de chamada que é usado para validar o certificado X.509 que é inserido no cabeçalho da Segurança de Serviços da Web na mensagem SOAP como um token de segurança binário no lado do consumidor. Essa instância é utilizada para gerar o objeto WSSVerification e os objetos WSSDecryption, configure os objetos no objeto WSSConsumingContext para validar os tokens de segurança binário X.509. São necessários um armazenamento de chaves e uma definição de chave para este manipulador de retorno de chamada. Se você utilizar essa implementação, uma senha de armazenamento de chaves, caminho e tipo devem ter sido fornecidos no lado do gerador.
    com.ibm.websphere.wssecurity.callbackhandler.LTPAConsumeCallbackHandler
    Essa classe é um manipulador de retorno de chamada para tokens LTPA (Lightweight Third Party Authentication) no lado do consumidor. Essa instância é utilizada para gerar os objetos WSSVerification e WSSDecryption para validar um token LTPA.

    Esse manipulador de retorno de chamada é usado para validar o token de segurança LTPA inserido no cabeçalho da Segurança de Serviços da Web na mensagem SOAP como um token de segurança binário. Entretanto, se o nome do usuário e a senha forem especificados, o WebSphere Application Server autenticará o nome do usuário e a senha para obter o token de segurança LTPA, em vez de obtê-lo do Assunto Executar Como. Utilize este manipulador de retorno de chamada apenas quando o serviço da Web estiver agindo como um cliente no servidor de aplicativos. É recomendável não usar este manipulador de retorno de chamada em um aplicativo cliente Java EE. Se você utilizar essa implementação, um ID de usuário e uma senha da autenticação básica devem ter sido fornecidos no lado do gerador.

    com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler
    Esta classe é um manipulador de retorno de chamada para o token Kerberos v5 no lado do consumidor. Essa instância é utilizada para configurar o objeto WSSConsumingContext para consumir o Kerberos v5 AP-REQ como um token de segurança binário. A instância também é utilizada para gerar os objetos WSSVerification e WSSDecryption para utilizar a chave de sessão ou a chave derivada do Kerberos na verificação e criptografia de mensagens SOAP.
  7. Se um token X.509 for especificado, as informações adicionais de token também serão especificadas.
    Tabela 1. Informações para o Token X.509. Utilize o token X.509 para autenticar mensagens.
    Informações do Token Description
    keyStoreRef O nome de referência do armazenamento de chaves que é utilizado para o localizador de chaves.
    keyStorePath O caminho de arquivo de armazenamento de chaves a partir do qual o armazenamento de chaves é carregado, se necessário. É recomendável usar o ${USER_INSTALL_ROOT} no nome do caminho, pois essa variável se expande para o caminho do WebSphere Application Server em sua máquina. Esse caminho é necessário ao utilizar as implementações de manipulador de retorno de chamada de tokens X.509.
    keyStorePassword A senha que é utilizada para verificar a integridade do armazenamento de chaves ou a senha do armazenamento de chaves que é utilizada para desbloquear o armazenamento de chaves e para acessar o arquivo de armazenamento de chaves. O armazenamento de chaves e sua configuração são utilizados para algumas das implementações do manipulador de retorno de chamada padrão que são fornecidas pelo WebSphere Application Server.
    keyStoreType O tipo de armazenamento de chaves que é utilizado para o localizador de chaves. Esta seleção indica o formato que é utilizado pelo arquivo de armazenamento de chaves. Os seguintes valores estão disponíveis para seleção:
    JKS
    Utilize essa opção se o armazenamento de chaves usar o formato JKS (Java Keystore).
    JCEKS
    Utilize essa opção se o Java Cryptography Extension estiver configurado no SDK (kit de desenvolvimento de software). O IBM® JCE padrão está configurado no WebSphere Application Server. Esta opção fornece maior proteção para chaves privadas armazenadas, utilizando a criptografia Triple DES.
    JCERACFKS
    Utilize JCERACFKS se os certificados estiverem armazenados em um anel de chaves SAF (z/OS apenas).
    PKCS11KS (PKCS11)
    Utilize este formato se o seu armazenamento de chave utilizar o formato de arquivo PKCS#11. Os armazenamentos de chaves que utilizam este formato podem conter chaves RSA no hardware criptográfico ou podem conter chaves de criptografia que utilizam hardware criptográfico para garantir proteção.
    PKCS12KS (PKCS12)
    Utilize esta opção se seu armazenamento de chave utilizar o formato de arquivo PKCS#12.
    alias O nome do alias da chave. O alias da chave é utilizado pelo localizador de chaves para localizar a chave no arquivo de armazenamento de chaves.
    keyPassword A senha da chave que é utilizada para recuperar a chave. Esta senha é requerida para acessar o objeto de chave no arquivo de armazenamento de chave.
    keyName O nome da chave. Para assinaturas digitais, o nome da chave é utilizado pelas informações sobre assinatura do gerador de pedido ou do consumidor de resposta para determinar qual chave será utilizada para assinar digitalmente a mensagem. Para criptografia, o nome da chave é utilizado para determinar a chave utilizada para criptografia. O nome da chave deve ser um DN (Nome Distinto) completo. Por exemplo, CN=Bob,O=IBM,C=US.
    trustAnchorPath O caminho de arquivo a partir do qual a âncora de confiança é carregada.
    trustAnchorType O tipo de âncora de confiança.
    trustAnchorPassword A senha que é utilizada para verificar a integridade da âncora de confiança ou da senha utilizada para desbloquear o armazenamento de chaves.
    certStores Uma lista de armazenamentos de certificados. Um armazenamento de certificados de coleção inclui uma lista de certificados não confiáveis intermediários e de CRLs (Certificate Revocation Lists). Este armazenamento de certificados de coleção é utilizado para validar o caminho do certificado de tokens de segurança formatados por X.509 que chegam.
    provedor O provedor de segurança.

    O seguinte pode ser especificado para um token X.509:

    1. Sem qualquer armazenamento de chaves.
    2. Com uma âncora de confiança. Uma âncora de confiança especifica uma lista de configurações do armazenamento de chaves que contêm certificados raiz confiáveis. Estas configurações são utilizadas para validar o caminho do certificado de tokens de segurança formatados por X.509 que chegam. Por exemplo, ao selecionar a âncora de confiança ou o armazenamento de certificados de um certificado confiável, será necessário configurar a âncora de confiança e o armazenamento de certificados antes de configurar o caminho do certificado.
    3. Com um armazenamento de chaves que é utilizado para o localizador de chaves.

      Em primeiro lugar, você deve ter criado o arquivo de armazenamento de chaves, utilizando um utilitário keytool, por exemplo. O armazenamento de chave é utilizado para recuperar o certificado X.509. Essa entrada especifica a senha que é utilizada para acessar o arquivo de armazenamento de chaves. Os objetos do armazenamento de chaves nas âncoras de confiança contêm certificados raiz confiáveis que são utilizados pela API CertPath para validar a confiança de uma cadeia de certificados. Os nomes da âncora de confiança e do armazenamento de certificados de coleta são criados no caminho do certificado sob seu consumidor de token.

    4. Com um armazenamento de chaves que é utilizado para o localizador de chaves e a âncora de confiança.
    5. Com um mapa que inclui pares chave-valor. Por exemplo, você pode especificar o nome do tipo de valor e o URI (Identificador Uniforme de Recursos) do tipo de valor. O tipo de valor especifica o URI de espaço de nomes do tipo de valor para o token do consumidor e representa o tipo de valor dessa classe:
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3
      Especifica um token de certificado X.509.
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
      Especifica certificados X.509 em um caminho PKI (Public Key Infrastructure). Esta rotina de tratamento de retorno de chamada é utilizada para criar certificados X.509 codificados com o formato PkiPath. O certificado é inserido no cabeçalho do Web Services Security na mensagem SOAP como um token de segurança binário. É requerido um armazenamento de chave para esta rotina de tratamento de retorno de chamada. Uma CRL não é suportada pela rotina de tratamento de retorno de chamada; portanto, o armazenamento de certificados de coleção não é requerido nem utilizado. Se você utilizar esta implementação, deverá fornecer uma senha, um caminho e um tipo de armazenamento de chaves neste painel.
      ValueType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#PKCS7
      Especifica uma lista de certificados X.509 e listas de revogação de certificado em um formato PKCS#7. Esta rotina de tratamento de retorno de chamada é utilizada para criar certificados X.509 codificados com o formato PKCS#7. O certificado é inserido no cabeçalho da Segurança de Serviços da Web na mensagem SOAP como um token de segurança binário. É requerido um armazenamento de chave para esta rotina de tratamento de retorno de chamada. É possível especificar uma CRL (Certificate Revocation List) no armazenamento de certificados de coleção. A CRL é codificada com o certificado X.509 no formato PKCS#7. Se você utilizar esta implementação, deverá fornecer uma senha, um caminho e um tipo de armazenamento de chaves.

      Para alguns tokens, o WebSphere Application Server fornece um nome local predefinido para o tipo de valor. Ao especificar o seguinte nome local, não será necessário especificar um URI do tipo de valor:

      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      Para um token LTPA, é possível utilizar LTPA para o nome local do tipo de valor. Esse nome local faz com que http://www.ibm.com/websphere/appserver/tokentype/5.0.2 seja especificado para o URI (Identificador Uniforme de Recursos) do tipo de valor.
      ValueType: http://www.ibm.com/websphere/appserver/tokentype/5.0.2
      Para propagação de token LTPA, você pode utilizar LTPA_PROPAGATION para o nome local do tipo de valor. Este nome local faz com que http://www.ibm.com/websphere/appserver/tokentype seja especificado para o URI (Identificador Uniforme de Recursos) do tipo de valor.
  8. Se o token de Nome do Usuário for especificado como o nome de classe do consumidor de token, as seguintes informações de token podem ser especificadas:
    1. Se o nonce deve ser especificado.

      Esta opção indica se um Nonce está incluído para o consumidor do token. Nonce é um número criptográfico exclusivo incorporado em uma mensagem para ajudar a parar repetidos ataques não autorizados de tokens do Nome do Usuário. Nonce é válido apenas quando o tipo de token sendo validado for um token de Nome do Usuário e está disponível apenas para ligação do consumidor de resposta.

    2. Especifica a palavra-chave do registro de data e hora. Esta opção indica se será necessário verificar um registro de data e hora no token do Nome do Usuário. O registro de data e hora é válido apenas quando o tipo de token incorporado for um token de Nome do Usuário.
    3. Especifica um mapa que inclui pares chave-valor. Por exemplo, você pode especificar o nome do tipo de valor e o URI (Identificador Uniforme de Recursos) do tipo de valor. O tipo de valor especifica o URI de espaço de nomes do tipo de valor para o token do consumidor e representa o tipo de valor dessa classe:
      Tipo de valor do URI: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
      Especifica um token de Nome do Usuário.
  9. Se um token Kerberos v5 for especificado como o nome de classe do gerador de token, as seguintes informações de token poderão ser especificadas:
    Informações do Token Description Valor Padrão
    tokenValueType Tipo de valor do token Kerberos em QName definido pela especificação Oasis Kerberos Token Profile v1.1. http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ
    requireDKT Um valor booleano para requerer uma chave derivada para proteção de mensagens. falso
    clabel A etiqueta de cliente para a chave derivada. WS-SecureConversation

    Especifique nulo para usar o valor padrão.

    slabel A etiqueta de serviço para a chave derivada. WS-SecureConversation

    Especifique nulo para usar o valor padrão.

    keylen O comprimento da chave derivada. 16

    Especifique zero para usar o valor padrão

    supportTokenRequireSHA1 Um valor booleano para requerer uma chave SHA1 que é utilizada em mensagens de pedidos subseqüentes quando o token Kerberos é utilizado como token de suporte. falso

    A chave SHA1 será consumida apenas se o token Kerberos de suporte estiver protegido. Se configurada como true, a chave SHA1 será sempre consumida.

    decComponent Uma instância de WSSDecryption. Configure decComponent e verComponent como null para que isso seja inicializado primeiro para o componente de decriptografia ou de verificação. Em seguida, use o componente inicializado apenas no construtor do manipulador de retorno de chamada para o segundo componente.
    verComponent Uma instância de WSSVerfication. Configure decComponent e verComponent como null para que isso seja inicializado primeiro para o componente de decriptografia ou de verificação. Em seguida, use o componente inicializado apenas no construtor do manipulador de retorno de chamada para o segundo componente.
    Tipos de valores de token adicionais são definidos na especificação OASIS Kerberos Token Profile v1.1. Especifique o tipo de valor do token como o nome local. Não será necessário especificar o URI do tipo de valor para o token Kerberos v5.
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ1510
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ4120
    • http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile-1.1#GSS_Kerberosv5_AP_REQ4120
  10. Se a conversação segura for utilizada para a proteção de mensagens, as seguintes informações deverão ser especificadas:
    Informações Description
    EncryptionAlgorithm Determina o tamanho da chave.
    cLabel A etiqueta de cliente utilizada ao criar a chave derivada.
    sLabel A etiqueta de servidor utilizada ao criar a chave derivada.
  11. Configure os componentes no objeto wssConsumingContext.
  12. Chame o método wssConsumingContext.process().

Resultados

Utilizando as WSS APIs, você terá configurado o consumidor de token.

O que Fazer Depois

É necessário especificar uma configuração do gerador de token semelhante, se ela ainda não estiver preenchida.

Í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=twbs_configtokenconjaxws
Nome do arquivo: twbs_configtokenconjaxws.html