Conectando o Token de Gerador Utilizando WSS APIs para Proteger a Autenticidade da Mensagem

Ao especificar o gerador de token, as informações são utilizadas no lado do gerador para gerar o token de segurança.

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.TokenGeneratorComponent não é usada 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 no servidor de aplicativos porque não há asserção de política KeyName definida na especificação de rascunho OASIS Web Services Security atual.

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 de Nome do Usuário é 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 gerador, 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 consumidor.

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 gerador, utilize a interface de gerador 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 wssGenerationContext.

    A interface WSSGenerationContext armazena os componentes para gerar o WS-Security (Web Services Security), como as informações sobre assinatura e de criptografia, o token de segurança e o registro de data e hora. Quando o método generate() é chamado, todos esses componentes são gerados.

  3. Crie componentes do lado do gerador, como os objetos WSSSignature e WSSEncryption.
  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 gerador de token. O nome da classe do gerador do token especifica as informações necessárias para gerar 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 do 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.

    A implementação do manipulador de retorno de chamada obtém o token de segurança requerido e transmite-o para o gerador de token. O gerador de token insere o token de segurança no cabeçalho da Segurança de Serviços da Web dentro da mensagem SOAP. Além disso, o gerador de token é um ponto de plug-in para a estrutura do token de segurança que pode ser conectada. Os fornecedores de serviços podem oferecer sua própria implementação, mas a implementação deve utilizar a interface WSSGenerationContext.

    O WebSphere Application Server fornece as seguintes implementações do manipulador de retorno de chamada padrão para o lado do gerador:
    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).
    com.ibm.websphere.wssecurity.callbackhandler.UNTGUIPromptCallbackHandler
    Esta classe é um manipulador de retorno de chamada para o token de Nome do Usuário com o prompt da GUI no lado do gerador. Esta instância é utilizada para configurar o objeto WSSGenerationContext para gerar um token de Nome do Usuário.
    com.ibm.websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler
    Esta classe é um manipulador de retorno de chamada para o token de Nome do Usuário no lado do gerador. Essa instância é utilizada para configuração no objeto WSSGenerationContext para conexão de um token de Nome do Usuário. Utilize esta implementação apenas para um aplicativo cliente Java EE (Java Platform, Enterprise Edition).
    com.ibm.websphere.wssecurity.callbackhandler.X509GenerateCallbackHandler
    Essa classe é um manipulador de retorno de chamada que é usado para gerar 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 gerador. Essa instância é utilizada para gerar objetos WSSSignature e WSSEncryption, configure os objetos no objeto WSSGenerationContext para gerar os tokens de segurança binária 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 ser fornecidos no lado do gerador.
    com.ibm.websphere.wssecurity.callbackhandler.LTPAGenerateCallbackHandler
    Essa classe é um manipulador de retorno de chamada para tokens LTPA (Lightweight Third Party Authentication) no lado do gerador. Esta instância é utilizada para gerar o objeto WSSSignature e o objeto WSSEncryption para gerar 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
    Essa classe é um manipulador de retorno de chamada para o token Kerberos v5 no lado do gerador. Essa instância é utilizada para configurar o objeto WSSGenerationContext para gerar o Kerberos v5 AP-REQ como um token de segurança binário. A instância também é utilizada para gerar os objetos WSSSignature e WSSEncryption para utilizar a chave de sessão ou a chave derivada do Kerberos na assinatura 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 assinatura e criptografia.
    Informações do Token Description
    storeRef O nome de referência do armazenamento de chaves.
    storePath 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.
    storePassword 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.
    storeType 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 criptografar chaves 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.
    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). Esta etapa configura um armazenamento de certificados de coleta e listas de revogação de certificado para as ligações do gerador.
    identityAssertion Especifica se a asserção de identidade é utilizada. Selecione este item, se a asserção de identidade estiver definida. Essa opção indica que apenas a identidade do emissor inicial é necessária e inserida no cabeçalho de Segurança de Serviços da Web na mensagem SOAP. Para um gerador de token X.509, o servidor de aplicativos envia apenas o certificado de signatário original.
    requestorCertificate Especifica se o certificado do solicitante é utilizado.

    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.

    4. Com o 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 gerado 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 gerador de token, as seguintes informações de token podem ser especificadas:
    1. Se a opção IdentityAssertion deve ser utilizada. Esta opção será selecionada, se a asserção de identidade for definida. Essa opção indica que apenas a identidade do emissor inicial é necessária e inserida no cabeçalho de Segurança de Serviços da Web na mensagem SOAP. Por exemplo, o WebSphere Application Server apenas envia o nome do usuário do responsável pela chamada original para um gerador de token do Nome de usuário.
    2. Se a opção de identidade RunAsSubject deve ser utilizada. Esta opção será utilizada, se uma asserção de identidade for definida e você desejar utilizar a identidade Executar como em vez da identidade do responsável pela chamada inicial para a asserção de identidade em uma chamada de recebimento de dados. Esta opção será válida apenas se você tiver configurado o token de Nome do Usuário como o gerador de token.
    3. Se sendRealm deve ser utilizado.
    4. Se o nonce deve ser especificado.

      Esta opção indica se um Nonce está incluído para o gerador de 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 gerado for um token de Nome do Usuário e estiver disponível apenas para ligação do gerador de pedido.

    5. 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.
    6. 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 gerado 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 o 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
    nome Nome do proprietário do cliente Kerberos  
    senha Senha do cliente Kerberos  
    região Região do Kerberos associada ao cliente Kerberos Nome da região padrão no arquivo de configuração do Kerberos.

    Especifique nulo para usar o valor padrão.

    targetService Nome do serviço do Kerberos associado aos serviços da Web de destino.  
    targetHost Nome da região do Kerberos associado ao nome do serviço Kerberos.  
    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
    targetRealm Nome da região do Kerberos associado ao nome do serviço Kerberos. Nome da região padrão no arquivo de configuração do Kerberos
    prompt Um valor booleano para ativar o prompt de login. falso
    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.

    alwaysAPREQ Um valor booleano para indicar que o cliente deve sempre enviar o token Kerberos AP_REQ nas mensagens de pedido. falso

    A chave SHA1 é utilizada no lugar das mensagens subseqüentes. Se configurada como true, o token Kerberos AP_REQ será sempre utilizado.

    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

    noncelen O comprimento do nonce. 16

    Especifique zero para usar o valor padrão

    encComponent Uma instância de WSSEncryption. Configure encComponent e sigComponent como null para que isso seja inicializado primeiro para o componente de criptografia ou de assinatura. Em seguida, use o componente inicializado apenas no construtor do manipulador de retorno de chamada para o segundo componente.
    sigComponent Uma instância de WSSSignature. Configure encComponent e sigComponent como null para que isso seja inicializado primeiro para o componente de criptografia ou de assinatura. 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
    bootstrapWSSGenerationContext A configuração de auto-inicialização utilizada para proteger o token RST (RequestSecurityToken).
    bootstrapWSSConmingContext A configuração de auto-inicialização utilizada para consumir um RSTR (RequestSecurityTokenResponse) protegido.
    ENDPOINT_URL A URL do terminal em serviço.
    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 wssGenerationContext.
  12. Chame o método wssGenerationContext.process().

Resultados

Utilizando o processo WSS API (Web Services Security API), é possível configurar o gerador do token.

O que Fazer Depois

Em seguida, é necessário especificar uma configuração semelhante do consumidor de token.

Í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_configtokengenjaxws
Nome do arquivo: twbs_configtokengenjaxws.html