Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Configurar comunicações seguras com o WebSphere Application Server e o WebSphere Message Broker usando tokens SAML 2.0 e o Tivoli Federated Identity Manager

Rashmi Katagall, WebSphere Message Broker Post-GA Test, IBM
Rashmi Katagall é Engenheira de Software de Sistema na equipe de Teste WebSphere Message Broker. Ela tem dois anos de experiência no trabalho em várias versões do WebSphere Message Broker. Ela se formou em Engenharia Eletrônica e de Comunicação pelo Gogte Institute of Technology, na Bélgica. É possível entrar em contato com Rashmi pelo endereço rashmikatagall@in.ibm.com.

Resumo:  Este artigo mostra como configurar a comunicação segura usando o perfil de token SAML com o WebSphere Application Server V7 servindo de host para cliente e servidor de serviço da Web, e o WebSphere Message Broker V7 agindo como barramento de serviço corporativo para mediar a comunicação de aplicativo e assegurar que os requisitos de segurança sejam cumpridos. O IBM Tivoli Federated Identity Manager V6.2 age como STS (Security Token Service) e emite os tokens SAML.

Data:  18/Mai/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1154 visualizações
Comentários:  


Introdução

A linguagem SAML (Security Assertion Markup Language), desenvolvida pelo Security Services Technical Committee (SSTC) da organização de normas OASIS, oferece uma solução promissora para conexão única (SSO) via Web; também tem potencial para uso em autenticação e autorização de processos de negócios de ponta a ponta que abrangem vários sistemas. Na SSO, o usuário pode acessar diversos aplicativos da Web sem ter que se reautenticar em cada um deles. Um token SAML é emitido para o cliente pelo STS, com o qual o provedor de aplicativos da Web tem um relacionamento de confiança.

Este artigo mostra como configurar a comunicação segura usando o perfil de token SAML com o IBM® O WebSphere® Application Server V7 (de agora em diante chamado de Application Server) servindo de host para cliente e servidor de serviço da Web, e o WebSphere Message Broker V7 (de agora em diante chamado de Message Broker) agindo como barramento de serviço corporativo para mediar a comunicação de aplicativo e assegurar que os requisitos de segurança sejam cumpridos. O Message Broker e o Application Server usam o IBM Tivoli® Federated Identity Manager V6.2 (de agora em diante chamado de Identity Manager) como STS.

O Application Server introduziu o suporte a tokens de segurança SAML no V7 Fix Pack 7, e o Message Broker introduziu o recurso de passagem SAML na V7 Fix Pack 1. Este artigo mostra como configurar conjuntos de políticas e ligações para tokens SAML 2.0 assinados ou não com o método de confirmação sujeito ao portador. Veremos também como desenvolver cadeias confiáveis apropriadas em um STS para emitir tokens SAML com o método de confirmação sujeito ao portador, usando STS. A comunicação entre o cliente e o STS ocorre por SSL (Secure Socket Layer), e também veremos como configurá-la. Depois de vermos essas etapas, estaremos preparados para usar aplicativos seguros com o perfil SAML 2.0.

Antes de começar com a configuração, devemos entender como um token SAML flui do STS para o cliente e provedor de serviço da Web, como mostrado na Figura 1. O cliente e o provedor podem ser desenvolvidos no Application Server ou no Message Broker.


Figura 1. Fluxo do token SAML do STS para o cliente e provedor de serviço da Web

Como mostrado na Figura 1, o cliente envia uma solicitação WS-Trust para o STS emitir o token SAML. O cliente envia então a solicitação de serviço da Web ao provedor no Application Server ou Message Broker, juntamente com o token SAML recebido do STS. No Application Server, o provedor valida as informações no token SAML, como o tempo de expiração, assinatura, e assim por diante, antes de processar sua lógica de negócios. No Message Broker, o provedor faz uma chamada para o STS para validar o token SAML, visto que ele não pode executar a validação ele mesmo. O token SAML sempre flui em um sentido, do cliente ao provedor. Para que esses fluxos de comunicação funcionem corretamente, é preciso configurar os diversos componentes do sistema mostrados na Figura 1. As seções a seguir mostram como fazer isso.

Configurando a comunicação entre o Application Server e o STS

Para começar, é preciso configurar a comunicação entre o Application Server e o STS para que o STS emita um token de segurança. Primeiro, é preciso configurar os conjuntos de políticas e as ligações, além da comunicação SSL.

  1. No console do Application Server, navegue até Services => Policy sets => Application policy sets.
  2. Selecione Username WSHTTPS default e clique em Copy.
  3. Digite um nome exclusivo ― SampleUsernameWSHTTPS, neste exemplo ― e clique em OK.
  4. Clique em SampleUsernameWSHTTPS => WS-Security => Main policy.
  5. A Figura 2 mostra a caixa de diálogo das políticas de segurança de mensagens que veremos a seguir. Desmarque Message level protection e clique em Apply:

    Figura 2. Estabelecendo políticas de segurança de mensagens


  6. Salve as mudanças clicando em Save.
  7. No console do Application Server, navegue até Applications => Application Types => WebSphere enterprise applications => your_application_deployed => Service client policy sets and bindings. A Figura 3 mostra a janela para configurar as propriedades do aplicativo implementado, com o link adequado em destaque:

    Figura 3. Configurando propriedades de serviço da Web


  8. Marque a caixa correspondente ao seu serviço de aplicativo.
  9. No menu suspenso Attach Client Policy Set , escolha SampleUsernameWSHTTPS.
  10. Marque a caixa correspondente ao seu serviço de aplicativo.
  11. No menu suspenso Assign Binding , escolha New Application Specific Binding, como mostrado na Figura 4:

    Figura 4. Selecionando uma ligação específica de aplicativo


  12. Sua tela deve agora estar parecida como a Figura 5 abaixo, onde se podem configurar propriedades de ligação específicas do aplicativo. Digite um nome adequado sob Bindings e um nome de configuração, como NewHttpS.
  13. Selecione WS-Security no menu suspenso Add .

    Figura 5. Configurando políticas de ligação específicas do aplicativo


  14. Clique em Authentication and protection e depois selecione Authentication tokens => request:uname_token, como mostra a Figura 6:

    Figura 6. Configurando um token em uma ligação específica do aplicativo


  15. Aparecerá a tela mostrada na Figura 7, com as informações importantes preenchidas. Clique em Apply e, a seguir, clique em Callback handler.

    Figura 7. Gerador de token


  16. A Figura 8 mostra a próxima tela. Digite o nome de usuário e a senha para autenticar com o STS que estará usando.
  17. Clique em OK e, a seguir, clique em Save:

    Figura 8. Concluindo as etapas de ligação específicas do aplicativo


  18. Navegue até Security => SSL certificate and key management => Manage endpoint security configurations => node endpoint (ou server endpoint).
  19. Clique em Key stores and certificates e, a seguir, clique em NodeDefaultTrustStore, como mostrado na Figura 9:

    Figura 9. Selecionando um armazenamento de confiança para keystores e certificados


  20. Agora deve aparecer a janela para recuperar os certificados assinados do Identity Manager, como mostrado na Figura 10. Clique em Sign certificates e, a seguir, clique em Retrieve from port.
  21. Digite o host apropriado, a porta e o nome de alias, e depois clique em Retrieve Signer Information.
  22. Clique em Apply e em Save.

    Figura 10. Recuperar o certificado de assinatura do Identity Manager


  23. Navegue até Applications => Application Types => WebSphere enterprise applications => your_application_deployed => Service client policy sets and bindings.
  24. Marque o quadro correspondente ao serviço e clique em Detach Client Policy Set.

Configurando a comunicação entre o cliente o serviço da Web no Application Server

Você precisa criar conjuntos de políticas e ligações adequados a fim de implementar comunicações seguras SAML entre seu cliente e seu serviço da Web. O cliente e o serviço terão o mesmo conjunto de políticas, enquanto as ligações dos dois serão diferentes. Comece criando os conjuntos de políticas SAML 2.0:

  1. No console do Application Server, navegue até Services => Policy sets => Application policy sets.
  2. Selecione SAML20 Bearer WSSecurity default e clique em Copy.
  3. Digite um nome exclusivo ― SAML20BearerPolicySet, neste exemplo ― e clique em OK.
  4. Clique em SAML20BearerPolicySet => WS-Security => Main policy.
  5. Desmarque Message Level Protection e clique em Apply.
  6. Salve as alterações.

A seguir, é preciso criar ligações de conjuntos de políticas SAML 2.0 para o cliente.

  1. No console do Application Server, navegue até Services => Policy sets => General client policy set bindings.
  2. Selecione SAML Bearer Client Sample e clique em Copy.
  3. Digite um nome exclusivo ― SAML20BearerClientBinding, neste exemplo ― e clique em OK.
  4. Clique em Saml20BearerHttpSClientPSB => WS-Security => Authentication and protection.
  5. Em Authentication Tokens, clique em gen_saml20token.
  6. Clique em Callback handler.
  7. Em Basic Authentication, digite os detalhes de autenticação para se comunicar com o STS.
  8. Em Custom Properties, edite:
    • stsURI para apontar para o caminho completo do host STS. Se não for preciso configurar o SSL, o stsURI deve apontar para uma porta não SSL, como http://<stshost>:9080/.....
    • wstrustClientPolicy e wstrustClientBinding para apontar para o conjunto de políticas e ligação criados anteriormente para comunicação com o STS.
  9. Clique em Apply e, em seguida, em Save A tela deve ser parecida à Figura 11:

    Figura 11. Configurando o manipulador de retorno de chamada de gen_saml20token


Agora é preciso criar mais ligações de conjuntos de políticas SAML 2.0, desta vez para o serviço da Web.

  1. No console do Application Server, navegue até Services => Policy sets => General provider policy set bindings.
  2. Selecione SAML Bearer Provider Sample e clique em Copy.
  3. Digite um nome exclusivo ― SAML20BearerProviderBinding, neste exemplo ― e clique em OK.
  4. Clique em SAML20BearerProviderBinding => WS-Security => Authentication and protection.
  5. Clique em con_saml20token em Authentication Tokens.
  6. Clique em Callback handler.
  7. É preciso estabelecer o que fazer caso um token SAML 2.0 não assinado seja encontrado:
    • Exclua trustStoreType, trustStorePasswordetrustStorePath.
    • Clique em New e digite signatureRequired em Name e falso em Value.
    • Clique em New e digite trustedAlias em Name e sts_alias em Value.

    No final, deve aparecer uma tela como a da Figura 12:



    Figura 12. Configurando o manipulador de retorno de chamada para con_saml20token a fim de manusear um token SAML não assinado


  8. A seguir, é preciso definir a configuração para manusear um token SAML 2.0 não assinado. Mas primeiro é preciso já ter gerado um keystore com certificado de assinatura. A senha do keystore usada neste exemplo é keystorepass e o keystore é dsig_sts.jks. Para esses atributos, trustStoreType até jks, trustStorePassword até keystorepass, e trustStorePath até ${USER_INSTALL_ROOT}/etc/dsig_sts.jks, como mostrado na Figura 13 (embora obviamente seja necessário alterar esses atributos para atender aos seus requisitos). Copie o keystore para o local apropriado se já não estiver lá.

    Figura 13. Configurando o manipulador de retorno de chamada de con_saml20token para manusear tokens SAML assinados


  9. Clique em Apply e, em seguida, em Save.

Os conjuntos de políticas e ligações foram configurados. Aplique-os ao cliente e ao serviço. Agora, ao chamar o cliente, uma solicitação WS-Trust será enviada para o STS solicitando que ele emita um token SAML 2.0. Essa solicitação é mostrada na Listagem 1.


Listagem 1. Mensagem de solicitação WS-Trust do cliente para o STS

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Header>
       <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">
            https://HostnameForSTS:9443/TrustServerWST13/services/RequestSecurityToken
       </wsa:To>
       <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">
            urn:uuid:F81EA90D3F125892041274943526169
       </wsa:MessageID>
       <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">
            http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue
       </wsa:Action>
    </soapenv:Header>
    <soapenv:Body>
       <wst:RequstSecurityToken 
       xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
            <wst:TokenType> 
                  http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAML2.0
            </wst:TokenType> 
            <wst:RequestType> 
                  http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue
            </wst:RequestType> 
            <wst:KeyType> 
                  http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer
            </wst:KeyType>
            <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
                <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
                    <wsa:Address>
                        http://localhost:9080/MyService/HelloService
                    </wsa:Address>
                </wsa:EndpointReference>
            </wsp:AppliesTo>
     </wst:RequstSecurityToken >
   </soapenv:Body>
</soapenv:Envelope>  

Configurando uma cadeia confiável no Identity Manager

O Identity Manager usa os atributos RequestType, AppliesTo e TokenType da mensagem de solicitação WS-Trust para mapear uma solicitação recebida para a cadeia confiável apropriada. Na mensagem de solicitação WS-Trust da Listagem 1, esses atributos têm os seguintes valores:

  • RequestType: http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue
  • AppliesTo: http://localhost:9080/MyService/HelloService
  • TokenType: http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0

Agora é preciso criar uma cadeia confiável no Identity Manager.

  1. No console do Identity Manager, navegue até Tivoli Federated Identity Manager => Configure Trust Service => Trust Service Chains.
  2. Clique em Create e, a seguir, clique em Next .
  3. Deve aparecer uma janela como a da Figura 14. Dê um nome apropriado à cadeia ― Issue SAML2.0 for WAS Service, neste exemplo ― e clique em Next .

    Figura 14. Criando uma cadeia


  4. Agora, selecione Issue Oasis URI no menu suspenso Request Type . Digite a URL acima em AppliesTo e selecione SAML2.0 no menu suspenso Token Type . A tela deve ser parecida à Figura 15. Clique em Next e, em seguida, em Next novamente.

    Figura 15. Configurando a cadeia confiável com atributos específicos


    Tenha em mente que o Application Server não envia um emissor em sua mensagem de solicitação WS-Trust. Portanto, o campo Issuer do Identity Manager precisa ser mantido em branco, e qualquer entrada nesse campo causará uma exceção de ponteiro nulo. Pode-se usar expressões regulares nesses campos. Por exemplo, para Address, poderia ser digitado REGEXP:(http://.*:.*/MyService/HelloService). O asterisco é caractere curinga.
  5. Agora, selecione Default Map Module para Module Instance e map para o Mode e depois selecione Add selected module instance to chain, como mostrado na Figura 16.

    Figura 16. Selecionando as instâncias de módulo para a cadeia confiável


    Para emitir um token SAML 2.0, é necessário mapeamento adequado. O arquivo de mapeamento define o método de confirmação, as instruções de autenticação, e assim por diante, que serão incluídos no token SAML 2.0 emitido. A Listagem 2 mostra o arquivo de mapeamento de amostra do token SAML 2.0 no nosso sistema de exemplo.



    Listagem 2. Arquivo de mapeamento de amostra
         
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:stsuuser="urn:ibm:names:ITFIM:1.0:stsuuser" version="1.0">
        <xsl:strip-space elements="*" />
       <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" />
        <!-- Start with a copy of the document -->
          <xsl:template match="@* | node()">
            <xsl:copy>
               <xsl:apply-templates select="@* | node()" />
            </xsl:copy>
          </xsl:template>
          <xsl:template match="//stsuuser:AttributeList"></xsl:template>
          <xsl:template match="//stsuuser:Principal">
            <stsuuser:Principal>
               <stsuuser:Attribute name="name">
                  <stsuuser:Value>WAS</stsuuser:Value>
               </stsuuser:Attribute>
            <stsuuser:Attribute name="SamlSubjectConfirmationMethod"
                    type="urn:oasis:names:tc:SAML:2.0:assertion">
                <stsuuser:Value>urn:oasis:names:tc:SAML:2.0:cm:bearer</stsuuser:Value>
            </stsuuser:Attribute>
            <stsuuser:Attribute name="Issuer"
                    type="urn:oasis:names:tc:SAML:2.0:assertion">
                <stsuuser:Value>UsernamePasswordToSAML</stsuuser:Value>
            </stsuuser:Attribute>
           </stsuuser:Principal>
        </xsl:template>
    </xsl:stylesheet>
         

  6. A seguir, selecione Default SAML2.0 Token no menu suspenso Module Instance e issue no menu suspenso Mode . Clique em Add selected module instance to chain. A tela deve ser parecida à Figura 17. Clique em Next .

    Figura 17. Acrescentando duas instâncias de módulo


  7. Pode aparecer um aviso neste ponto. Se isso acontecer, clique em Continue e, em seguida, em Next .
  8. Será solicitada a escolha do arquivo de mapeamento. Copie e cole o código da Listagem 2 em um editor de texto e salve-a como arquivo com a extensão .xsl. Selecione o local para esse arquivo e clique em Next .
  9. Agora deve ser possível ver a janela mostrada na Figura 18. Digite um nome para a organização emissora ― pode-se usar qualquer coisa específica para o STS que estamos usando ― e mude o período no qual o token SAML será válido, se necessário:

    Figura 18. Configurando as propriedades SAML


  10. Na mesma página (na parte mostrada na Figura 19) marque a caixa Sign SAML Assertions se estiver usando um token SAML assinado. Selecione o keystore no menu suspenso Keystore . Digite a senha do keystore selecione List Keys; depois selecione a chave na lista. Clique em Next :

    Figura 19. Configurando um token SAML assinado


    Aparecerá então uma página de resumo, onde é possível verificar as opções selecionadas. Clique em Finish.
  11. O keystore deve ser importado então para o Identity Manager. Navegue até Tivoli Federated Identity Manager => Configure Key Service => Keystores. Clique em Import e selecione as propriedades, como mostrado na Figura 20.

    Figura 20. Importando o keystore


  12. A cadeia criada estará listada sob Console => Configure Trust Service => Trust Service Chains. Para verificar ou alterar as propriedades, selecione a cadeia e clique nas propriedades.

Nesse ponto, a cadeia confiável está concluída. Agora, o STS responde ao cliente com um token SAML 2.0 nos cabeçalhos wsse da mensagem de resposta SOAP, mostrada na Listagem 3:


Listagem 3. Cabeçalhos wsse da resposta SOAP

<wsse:Security xmlns:wsse=
   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
      soapenv:mustunderstand="1">
        <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
               xmlns:xs="http://www.w3.org/2001/XMLSchema" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               ID="Assertion-uuiddee4b651-0128-1af0--9afe9-b4f4978a7ee1" 
               IssueInstant="2010-05-28T12:30:50Z" 
               Version="2.0">
            <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
               UsernamePasswordToSAML2.0
            </saml:Issuer>
            <saml:Subject>
               <saml:NameID>WAS</saml:NameID>
               <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
               </saml:SubjectConfirmation>
            </saml:Subject>
            <saml:Conditions NotBefore="2010-05-28T12:20:50Z" 
            NotOnOrAfter="2010-05-29T12:20:50Z">
                <saml:AudienceRestriction>
                <saml:Audience>http://localhost:9080/MyService/HelloService
                </saml:Audience>
                </saml:AudienceRestriction>
            </saml:Conditions>
            <saml:AuthnStatement AuthnInstant="2010-05-28T12:20:50Z">
                <saml:AuthnContext>
                <saml:AuthnContextClassRef>
                   urn:oasis:names:tc:SAML:2.0:ac:classes:Password
                </saml:AuthnContextClassRef>
                </saml:AuthnContext>
            </saml:AuthnStatement>
       </saml:Assertion>
   </wsse:Security>

Seu cliente integrará esse token SAML 2.0 ao cabeçalho wsse da solicitação SOAP que ele envia ao serviço da Web. No serviço, o token SAML 2.0 é validado e a resposta é enviada de volta ao cliente. Já vimos como proteger a comunicação entre um cliente e um serviço da Web no Application Server usando o Identity Manager como STS. Em seguida, aprenderemos como configurar os conjuntos de políticas e ligações para um cliente de serviço da Web e um servidor no Message Broker.

Configurando conjuntos de políticas e ligações para serviços da Web

Os serviços da Web no Message Broker são desenvolvidos usando nós SOAP. O Message Broker V7 with Fix Pack 1 suporta o recurso de passagem SAML para os nós SOAP; em outras palavras, quando um provedor de serviços da Web (um fluxo com um nó SOAPInput no início) é desenvolvido, o nó SOAPInput aceita o token SAML 2.0 na mensagem de solicitação SOAP recebida. Ele pode validar o token com o STS externo ou pode simplesmente deixar o token se propagar pelo fluxo. De forma similar, no cliente de serviço da Web (um fluxo com o nó SOAPRequest ou AsyncRequest), o nó SOAPRequest ou AsyncRequest pode propagar o token SAML 2.0 na mensagem de solicitação SOAP de saída. Visto que o Message Broker oferece passagem SAML, os tokens SAML, assinados ou não, são manuseados de forma similar; sem nenhuma necessidade de configuração extra a ser feita.

Nesta seção, aprenderemos a criar os conjuntos de políticas e ligações que são aplicados aos nós SOAP e aos perfis de segurança. Os exemplos encontrados aqui incluem fluxos de amostra para ambos os cenários. Comece criando conjuntos de políticas para a passagem SAML 2.0.

  1. Abra o Message Broker Explorer, dê um clique com o botão direito do mouse no broker e selecione Properties => Security => Policy Sets.
  2. Selecione Policy Sets e clique em Add.
  3. Dê um nome adequado ao conjunto de políticas ― SAMLPolicySet, neste exemplo ― e clique em Rename.
  4. Navegue até SAMLPolicySet => WS-Security => Authentication Tokens.
  5. A tela deve ser parecida à Figura 21. Em Other authentication tokens, clique em Add e dê um nome ao token ― SAML20, neste exemplo. Depois, selecione SAMLv2.0Passthrough no menu suspenso Token Type e clique em Finish:

    Figura 21. Criando um conjunto de políticas SAML 2.0 em um message broker


A seguir, criaremos ligações de conjuntos de políticas SAML 2.0 para o cliente de serviço da Web (o nó SOAPRequest no fluxo).

  1. Abra o Message Broker Explorer, dê um clique com o botão direito do mouse no broker e selecione Properties => Security => Policy Sets. Deve ser possível ver a janela mostrada na Figura 22.
  2. Selecione Policy Set Bindings e clique em Add.
  3. Selecione um nome apropriado ― SAMLPolicySetBindingsC, neste exemplo ― e clique em Rename.
  4. Selecione SAMLPolicySet no menu suspenso Associated Policy Set .
  5. Selecione o botão de opções Consumer para a configuração de ligação e depois clique em Finish:

    Figura 22. Criando ligações dos conjuntos de políticas SAML 2.0 no message broker


Agora é preciso criar ligações de conjuntos de políticas SAML 2.0 para o provedor de serviços da Web.

  1. Abra o Message Broker Explorer, dê um clique com o botão direito do mouse no broker e selecione Properties => Security => Policy Sets.
  2. Selecione Policy Set Bindings e clique em Add.
  3. Digite um nome apropriado ― SAMLPolicySetBindingsP, neste exemplo ― e clique em Rename.
  4. Selecione SAMLPolicySet no menu suspenso Associated Policy Set .
  5. Selecione o botão de opções Provider para a configuração de ligação e clique em Finish.

Os conjuntos de políticas e ligações estão prontos. Eles podem ser aplicados a nós SOAPInput e SOAPRequest de forma adequada nos arquivos BAR antes de implementá-los no broker. Para criar conjuntos de políticas para SAML 1.1, selecione SAMLv1.1 Passthrough no menu suspenso Token Type em Other authentication tokens.

Agora, estamos prontos para criar um perfil de segurança para a validação SAML 2.0 usando o STS.

  1. Abra o Message Broker Explorer, dê um clique com o botão direito do mouse no broker e selecione Properties => Security => Security Profiles.
  2. A tela deve ser parecida à Figura 23 abaixo. Selecione Security Profiles e clique em Add. Pressione F2 para renomear esse perfil como ValidateSAML20.
  3. Selecione WS-Trust v1.3 STS no menu suspenso Authentication .
  4. Digite uma URL de STS adequada para a configuração de autenticação e clique em Finish:

    Figura 23. Criando um perfil de segurança em um message broker para autenticação


Por fim, é preciso criar um perfil de segurança para emitir tokens SAML 2.0 com o Identity Manager como STS.

  1. Abra o Message Broker Explorer, dê um clique com o botão direito do mouse no broker e selecione Properties => Security => Security Profiles.
  2. Selecione Security Profiles e clique em Add. Pressione F2 para renomear o perfil como IssueSAML20.
  3. Selecione WS-Trust v1.3 STS no menu suspenso Mapping .
  4. Digite uma URL de STS adequada para a configuração de mapeamento e clique em Finish.

Agora é possível aplicar esses perfis de segurança ao nó SOAPInput no arquivo BAR antes de implementá-los no broker.

Configurando uma cadeia confiável no Identity Manager para emitir tokens SAML 2.0 para o Message Broker

Um cliente de serviço da Web desenvolvido no Message Broker terá um nó SOAPRequest para fazer solicitações ao serviço da Web. O nó SOAPRequest no Message Broker V7.0.0.1 pode chamar o serviço da Web com um token SAML; assim, deve-se disponibilizar um token SAML para ele usando o nó MQInput, HTTPInput ou SecurityPEP. O SecurityPEP é um novo tipo de nó do Message Broker 7.0.0.1, de modo que as etapas para configurá-lo para emitir tokens SAML 2.0 são explicadas aqui.

É preciso criar um fluxo de mensagens para servir como um cliente de serviços da Web, como mostrado na Figura 24, e definir as propriedades do nó SecurityPEP em conformidade com isso. A Figura 24 mostra o fluxo do cliente de serviços da Web no message broker e as propriedades do nó SecurityPEP:


Figura 24. Fluxo do cliente de serviço da Web

O fluxo é chamado por um cliente HTTP que envia uma mensagem como a da Listagem 4. Preencha o nome de usuário e a senha conforme apropriado para sua configuração.


Listagem 4. Chamando o fluxo

<Sample>
<Username>dummyuser</Username>
<Password>dummypasswd</Password>
<IssuedBy>dummyissue</IssuedBy>
</Sample>

Crie um arquivo BAR usando o fluxo acima e configure suas propriedades como segue:

  • Para as propriedades de SecurityPEP, defina securityProfileName para IssueSAML20.
  • Para o nó SOAPRequest, defina Policy Set para SAMLPolicySet, defina Policy Set Binding para SAMLPolicySetBindingC e defina Security profile para Default Propagation, como mostrado na Figura 25:

Figura 25. Configurando as propriedades do nó SOAPRequest

Em seguida, crie um fluxo de mensagens que seja um serviço da Web e defina as propriedades do nó SOAPInput do arquivo BAR, usando os valores da Figura 26:


Figura 26. Configurando as propriedades do nó SOAPInput

Agora, os fluxos de mensagens, juntamente com seus conjuntos de políticas e ligações associados, estão prontos para serem implementados no Message Broker.

Configurando cadeias confiáveis no Identity Manager para emitir e validar os tokens SAML 2.0

Quando o cliente de serviço da Web é chamado, o nó SecurityPEP faz uma solicitação WS-Trust para o Identity Manager com os seguintes atributos:

  • RequestType: http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue
  • AppliesTo: urn:<BrokerName>.<EGName>.<MessageFlowName>
  • Issuer: dummyissue (também é possível configurar isso como REGEXP:(.*) para aceitar qualquer emissor)
  • TokenType: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken

AppliesTo deveria ser wmq:/msg/queue/<inputqueue>@<queuemanager> se estiver sendo usado o nó MQInput e http://localhost:7080/<url-on-HttpInput-Node> se estiver sendo usado o nó HTTPInput. Usando esses atributos, é possível criar a cadeia para emitir tokens SAML 2.0 usando as etapas descritas na seção anterior.

Visto que o Message Broker V7.0.0.1 oferece recurso de passagem SAML, é necessário um provedor de segurança externo para validar o token SAML, o que não acontece com o Application Server. Quando o serviço da Web é invocado com o token SAML na solicitação, o nó SOAPInput faz uma solicitação WS-Trust para o Identity Manager validar o token SAML com os seguintes atributos na solicitação:

  • RequestType: http://docs.oasis-open.org/ws-sx/ws-trust/200512/Validate
  • AppliesTo: http://localhost:7800/Secure/services/Hello
  • Issuer: SOAP_WS_SECURITY (também é possível configurar isso como REGEXP:(.*) para aceitar qualquer emissor)
  • TokenType: http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0

Veja como criar a cadeia confiável no Identity Manager para validar o token SAML 2.0.

  1. No console do Identity Manager, navegue até Tivoli Federated Identity Manager => Configure Trust Service => Trust Service Chains.
  2. Clique em Create e, a seguir, clique em Next para abrir a página de Introdução.
  3. Dê um nome adequado à cadeia ― Validate SAML2.0 for Broker Service, neste exemplo ― e clique em Next .
  4. Selecione Validate Oasis URI no menu suspenso Request Type . Para AppliesTo, digite a URL e o Emissor mencionados acima e selecione SAML2.0 na lista suspensa Token Type . Clique em Next e, em seguida, em Next novamente.
  5. Selecione Default SAML2.0 Token para Module Instance e Validate para Mode e depois selecione Add selected module instance to chain.
  6. Na próxima página, desmarque Enable one-time assertion use enforcement e Enable Signature Validation.
  7. Clique em Next . Deverá aparecer então uma página de resumo, onde é possível verificar as opções que acabaram de ser selecionadas. Clique em Finish.
  8. A cadeia que acabou de ser criada será listada em Tivoli Federated Identity Manager => Configure Trust Service => Trust Service Chains. Para verificar ou alterar as propriedades, selecione a cadeia e clique nas propriedades.

Agora, as cadeias confiáveis estão configuradas no Federated Identity Manager para aceitar solicitações confiáveis do Message Broker.

Conclusão

Este artigo mostrou como configurar comunicação segura por SAML 2.0, assinado ou não, no Application Server e Message Broker, com o Identity Manager usado como Security Token Service. Embora este artigo tenha abrangido a comunicação segura entre cliente e serviço da Web no Application Server e no Message Broker separadamente, também é possível configurar a comunicação entre um cliente no Message Broker e um serviço da Web no Application Server, ou vice-versa, usando as etapas descritas aqui de modo que o Message Broker aja como ESB.

Agradecimento

Muito obrigada a Martin Boag, da equipe de desenvolvimento do WebSphere Message Broker, por revisar este artigo e fornecer feedback valioso.


Recursos

Sobre o autor

Rashmi Katagall é Engenheira de Software de Sistema na equipe de Teste WebSphere Message Broker. Ela tem dois anos de experiência no trabalho em várias versões do WebSphere Message Broker. Ela se formou em Engenharia Eletrônica e de Comunicação pelo Gogte Institute of Technology, na Bélgica. É possível entrar em contato com Rashmi pelo endereço rashmikatagall@in.ibm.com.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tivoli, WebSphere
ArticleID=658994
ArticleTitle=Configurar comunicações seguras com o WebSphere Application Server e o WebSphere Message Broker usando tokens SAML 2.0 e o Tivoli Federated Identity Manager
publish-date=05182011
author1-email=rashmikatagall@in.ibm.com
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).