Configurando os Tokens de Segurança do Consumidor Utilizando a WSS API

É possível proteger as mensagens SOAP, sem usar os conjuntos de política, utilizando as Web Services Security APIs. Para configurar o token no lado do consumidor, utilize as WSS APIs (Web Services Security APIs). Os tokens de segurança do consumidor são partes do pacote da interface com.ibm.websphere.wssecurity.wssapi.token.

Antes de Iniciar

A estrutura de token que pode ser conectado no WebSphere Application Server foi reprojetada, de forma que a mesma estrutura da API WSS possa ser reutilizada. A mesma implementação da criação e da validação do token de segurança pode ser utilizada para o tempo de execução da Segurança de Serviços da Web e para o código do aplicativo da API WSS. A estrutura reprojetada também simplifica o modelo de programação SPI e facilitará a inclusão de tipos de token de segurança.

É possível utilizar a WSS API ou é possível configurar os tokens, utilizando o console administrativo. Para configurar os tokens, é necessário ter concluído as seguintes tarefas de token: configure os tokens do gerador, conforme necessário.

Sobre Esta Tarefa

No lado do gerador, o JAAS CallbackHandler e JAAS LoginModule são responsáveis por criar o token de segurança. O token é criado utilizando o JAAS LoginModule e utilizando o JAAS CallbackHandler para transmitir os dados de autenticação. Depois, o JAAS LoginModule cria o objeto securityToken, como o UsernameToken, e o passa para o tempo de execução da Segurança de Serviços da Web.

No lado do consumidor, o formato XML é transmitido ao JAAS LoginModule para validação ou autenticação. Depois, 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 e da criação de um objeto de token de segurança, o token é passado para o tempo de execução da Segurança de Serviços da Web.

Ao utilizar a WSS API para validação de token do consumidor, ocorrem determinados comportamentos padrão. A maneira mais simples de utilizar a WSS API é utilizar o módulo de login do JAAS padrão e o manipulador de retorno de chamada. O exemplo utiliza o padrão; portanto, o exemplo não especifica o nome do módulo de login do JAAS.

A maneira mais simples de utilizar a WSS API é utilizar o comportamento padrão (consulte o código de exemplo). A WSS API fornece padrões para o tipo de token, o valor do token e o nome de configuração JAAS. Os comportamentos de token padrão incluem:

Tabela 1. Comportamentos de Token Padrão. Várias características de token são configuradas por padrão.
Decisões de Token do Consumidor Comportamento Padrão
Qual tipo de token utilizar

Especifica o tipo de token a ser utilizado para assinar a validar as mensagens. O token X.509 é o tipo de token padrão.

O WebSphere Application Server fornece os seguintes tipos de token de consumidor pré-configurados:

  • Token de Contexto de Segurança
  • Token de chave derivado
  • Tokens X509

Também é possível criar tipos de token customizados, conforme necessário.

Qual nome de configuração de login do JAAS especificar

O nome de configuração de login do JAAS especifica qual nome de configuração de login do JAAS utilizar.

Qual tipo de configuração utilizar O tipo de configuração do módulo de login do JAAS. Apenas os tipos de configuração do consumidor pré-configurado podem ser utilizados para os tipos de token do consumidor.

A classe SecurityToken (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) é a classe de token genérica e representa o token de segurança que possui métodos para obter a identidade, o formato XML e as chaves criptográficas. Utilizando a classe SecurityToken, é possível aplicar a assinatura e a criptografia para a mensagem SOAP. No entanto, para aplicar ambos, é necessário ter dois objetos SecurityToken, um para assinatura e um para criptografia, respectivamente.

Os seguintes tipos de token são subclasses da classe do token de segurança genérico:

Tabela 2. Subclasses do SecurityToken. Utilize as subclasses para representar o token de segurança.
Tipo de Token Nome de configuração de login do JAAS
Token de Contexto de Segurança system.wss.consume.sct
Token de chave derivado system.wss.consume.dkt

Os seguintes tipos de token são subclasses da classe do token de segurança binário:

Tabela 3. Subclasses para BinarySecurityToken. Utilize as subclasses para representar o token de segurança binário.
Tipo de Token Nome de configuração de login do JAAS
Token X.509 system.wss.consume.x509
Token do Caminho X.509 PKI system.wss.consume.pkiPath
Token X.509 PKCS7 system.wss.consume.pkcs7
Nota:
  • Para cada nome de configuração do consumidor do token de login do JAAS, existe um respectivo nome de configuração do gerador de token. Por exemplo, para o X509Token, o respectivo nome de configuração do gerador de token é system.wss.generate.x509.
  • Os tokens de propagação LTPA e LTPA estão disponíveis apenas para um solicitante que estiver sendo executado como um cliente baseado em servidor. O LTPA e os tokens de propagação LTPA não são suportados para o aplicativo cliente Java™ SE 6 ou Java EE.

Para validar o X509Token para a mensagem SOAP no lado do consumidor, o elemento <X509Token> deve estar no elemento <wsse:Security>.

Procedimento

  1. Para validar o pacote securityToken, com.ibm.websphere.wssecurity.wssapi.token, primeiro assegure-se de que o servidor de aplicativos esteja instalado.
  2. Se estiver utilizando valores padrão, configura os tokens para o processo do consumidor do token da Segurança de Serviços da Web. , para cada tipo de token, o processo é semelhante ao seguinte processo do consumidor de token:
    1. Usa WSSFactory.getInstance() para obter a instância de implementação da API WSS.
    2. Cria a instância do WSSConsumingContext a partir da instância do WSSFactory. Observe que WSSConsumingContext sempre deve ser chamado em um aplicativo cliente JAX-WS.
    3. Cria um JAAS CallbackHandler com informações necessárias para validar o token de segurança. Reveja as informações da classe de token para as quais os parâmetros são necessários ou opcionais. Por exemplo, para um token X.509, você poderia configurar o seguinte:
      Tabela 4. Opções de Token X.509. Utilize as opções de configuração do X.509 para controlar o comportamento do token.
      Informações do Token Description
      keyStoreRef Indica o nome da referência do armazenamento de chaves que é armazenado no cartão criptográfico. Ele pode ser especificado quando o cartão for configurado para o hardware.
      keyStorePath Indica o caminho do arquivo de armazenamento de chaves. Não será necessário especificar o keyStorePath se keyStoreRef estiver configurado.
      keyStorePassword Indica a senha do arquivo de armazenamento de chaves.
      keyStoreType Indica o tipo de arquivo do armazenamento de chaves.
      alias Indica o alias da chave.
      keyPassword Indica a senha da chave.
      keyName Indica o nome do assunto da chave.
    4. Configura o manipulador de retorno de chamada no WSSDecryption, WSSVerification ou WSSConsumingContext.
    5. Se o manipulador de retorno de chamada for configurado no WSSDecryption ou WSSVerification, inclui um deles no WSSConsumingContext.
    6. Chama WSSConsumingContext.process().
  3. Se estiver utilizando valores que não sejam padrão, configura os tokens para o processo do consumidor do token do Web Services Security. Para cada tipo de token, o processo é semelhante ao seguinte processo do consumidor de token:
    1. Se você não utilizar o módulo de login do JAAS padrão e o manipulador de retorno de chamada, será necessário preparar um customizado e registrar o nome de configuração de login do JAAS utilizando o console administrativo antecipadamente.
    2. Usa WSSFactory.getInstance() para obter a instância de implementação da API WSS.
    3. Cria a instância do WSSConsumingContext a partir da instância do WSSFactory. Observe que WSSConsumingContext sempre deve ser chamado em um aplicativo cliente JAX-WS.
    4. Cria um manipulador de retorno de chamada com informações necessárias para validar o token de segurança. Reveja as informações da classe de token para as quais os parâmetros são necessários ou opcionais. Por exemplo, para um token X.509, é possível configurar o seguinte:
      Tabela 5. Opções de Token X.509. Utilize as opções de configuração do X.509 para controlar o comportamento do token.
      Informações do Token Description
      keyStoreRef Indica o nome da referência do armazenamento de chaves que é armazenado no cartão criptográfico. Ele pode ser especificado quando o cartão for configurado para o hardware.
      keyStorePath Indica o caminho do arquivo de armazenamento de chaves. Não será necessário especificar o keyStorePath se keyStoreRef estiver configurado.
      keyStorePassword Indica a senha do arquivo de armazenamento de chaves.
      keyStoreType Indica o tipo de arquivo do armazenamento de chaves.
      alias Indica o alias da chave.
      keyPassword Indica a senha da chave.
      keyName Indica o nome do assunto da chave.
    5. Configura o nome de configuração JAAS e o manipulador de retorno de chamada no WSSDecryption ou WSSVerification, ou WSSConsumingContext.
    6. Se o nome de configuração JAAS e o manipulador de retorno de chamada forem configurados no WSSDecryption ou WSSVerification, inclui um deles no WSSConsumingContext.
    7. Chama WSSConsumingContext.process().

Resultados

Se houver uma condição de erro, uma WSSException será fornecida. Se bem-sucedido, o WSSConsumingContext.process() será chamado e o token de segurança no lado do consumidor será validado (autenticado).

Exemplo

O seguinte código de amostra fornece o código de exemplo WSS API para a decriptografia utilizando o módulo de login do JAAS padrão e o manipulador de retorno de chamada:

// Obter o contexto da mensagem 
   Object msgcontext = getMessageContext();

// Gerar a instância do WSSFactory (etapa: a)
   WSSFactory factory = WSSFactory.getInstance();		

// Gerar a instância do WSSConsumingContext (etapa: b)
   WSSConsumingContext gencont = factory.newWSSConsumingContext();

// Gerar o manipulador de retorno de chamada (etapa: c)
   X509ConsumeCallbackHandler callbackHandler = new 
        X509ConsumeCallbackHandler(
                                   "",
                                   "enc-sender.jceks",
                                   "jceks", 
                                   "storepass".toCharArray(), 
                                   "alice", 
                                   "keypass".toCharArray(), 
                                   "CN=Alice, O=IBM, C=US");

// Gerar a instância do WSSDecryption (etapa: d)
   WSSDecryption dec = factory.newWSSDecryption(X509Token.class, 
                                                callbackHandler);


// Incluir WSSDecryption em WSSConsumingContext (etapa: e)
   concont.add(dec);

// Validar o cabeçalho do WS-Security (etapa: f)
concont.process(msgcontext);

O que Fazer Depois

Para cada tipo de token, configure o token utilizando as WSS APIs ou utilizando o console administrativo. Em seguida, especifique tokens de gerador semelhantes, se isso não foi feito.

Se os tokens do gerador e do consumidor estiverem configurados, continue protegendo as mensagens SOAP no consumidor de resposta utilizando as WSS APIs ou configure os tokens utilizando o console administrativo.

Se os tokens do gerador e do consumidor estiverem configurados, continue protegendo as mensagens SOAP, verificando a assinatura ou decriptografando a mensagem, conforme necessário. É possível usar as WSS APIs ou o console administrativo para proteger as mensagens SOAP.


Í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_confwssconsumertoken
Nome do arquivo: twbs_confwssconsumertoken.html