Usando OAuth em IBM WebSphere DataPower Appliances, Parte 7: Usando o DataPower com o Tivoli Federated Identity Manager para oferecer suporte a OAuth 2.0

A Parte 7 deste artigo de várias partes descreve como usar um serviço WebSphere® DataPower para atuar como um ponto de execução do token OAuth para um servidor de autorização IBM ® Tivoli® Federated Identity Manager OAuth.

David Shute, Enablement Program Manager, IBM

Photo of David ShuteDavid Shute atuou na equipe de desenvolvimento do DataPower em uma variedade de funções desde antes de a IBM adquirir a DataPower em 2005. Atualmente, ele trabalha para garantir que os clientes recebam as informações necessárias para implementar com sucesso os produtos DataPower.



Peter Argue, Software Engineer, IBM

Photo of Peter ArguePeter Argue é membro da equipe de engenharia de software DataPower, especializado em segurança. Antes de fazer parte da equipe de engenharia, Peter esteve na organização de suporte e era especializado em segurança com o DataPower.



31/Ago/2012

Introdução

Na última etapa do padrão de protocolo OAuth, o cliente OAuth solicita acesso ao recurso desejado diretamente do servidor que hospeda esse recurso. Todo o protocolo OAuth existe para dar suporte a essa solicitação, fornecendo um método seguro para os clientes ganharem acesso a recursos de propriedade de outra pessoa. Por exemplo, John deseja usar algumas fotos de Fred para um projeto. John usa seu aplicativo gráfico (o cliente OAuth) para obter acesso às fotos de Fred (o servidor de recursos) usando permissão (na forma de um token de acesso OAuth) concedida por Fred (o proprietário do recurso). O aplicativo cliente de John obtém o token de acesso de um servidor de autorização Tivoli Federated Identity Manager.

Figura 1. Intercâmbio do protocolo OAuth com o Federated Identity Management e o DataPower
Intercâmbio do protocolo OAuth com o Federated Identity Management e o DataPower

O servidor de recursos verifica o token de acesso OAuth antes de retornar as fotos solicitadas pelo cliente. Entretanto, isso consome recursos do servidor e requer manutenção de configuração. A verificação de acesso pode ser feita no DMZ, mas não é seguro colocar o servidor de recursos no DMZ. Colocando um dispositivo DataPower na frente do servidor de recursos, toda a manipulação e verificação do token são realizadas pelo dispositivo, em vez de pelo servidor. Assim, o dispositivo DataPower é posicionado no DMZ e torna-se o ponto de execução do servidor de recursos OAuth.

Quando o DataPower atua como um ponto de execução para o servidor de recursos, ele verifica o token de acesso. O DataPower permite apenas a solicitação para o servidor de recursos do backend se o token de acesso for válido. Para verificar o token, o dispositivo DataPower entra em contato com o servidor Federated Identity Management diretamente. A versão compatível do Federated Identity Management é V6.2.2 ou posterior.

Esse artigo apresenta as etapas para configurar o dispositivo DataPower como o ponto de execução. Para reproduzir essa configuração no seu ambiente, é necessário ter uma instância do servidor Federated Identity Management executando e acessível na sua rede.


Registrar o cliente OAuth no Federated Identity Management

Antes de configurar o dispositivo DataPower, é necessário instalar e configurar o servidor do Federated Identity Management. O conjunto completo de etapas para realizar essa tarefa está além do escopo deste artigo. A Figura 2 mostra alguns dos principais valores mantidos no Federated Identity Management.

Figura 2. Configuração do cliente de OAuth do Federated Identity Management
Configuração do cliente de OAuth do Federated Identity Management

Observe os valores inseridos para Client Identifier e Client Shared Secret, mostrados na parte inferior da imagem na Figura 2. Esses valores são usados para identificar o dispositivo DataPower quando ele entra em contato com o servidor Federated Identity Management.

Todos os procedimentos restantes ocorrerão no dispositivo DataPower.

Para resumir e simplificar os procedimentos mostrados neste artigo, a configuração e os artefatos necessários para criar um perfil proxy SSL devem primeiro ser importados para o dispositivo DataPower que você está usando para essas etapas. Os arquivos zip contendo as informações necessárias são fornecidos com este artigo. Faça o download de ambos os arquivos e extraia os dois arquivos de chave criptografada do arquivo OAuth-TFIM-SSLProfile-crypto.zip.

  1. Para importar e ativar o perfil proxy SSL, clique no ícone Import Configuration no Painel de Controle. O painel Import Configuration aparece como mostrado na Figura 3.
    Figura 3. Painel Import Configuration
    Painel Import Configuration
  2. Clique em Browse e selecione o arquivo OAuth-TFIM-SSLProfile-base.zip no seu sistema de arquivos local.
  3. Clique em Next. . O dispositivo exibe os conteúdos do arquivo de configuração compactado como mostrado na Figura 4.
    Figura 4. Configuração para importar
    Configuração para importar
  4. Role para baixo e clique em Import. . O dispositivo exibe os resultados.
  5. Clique em Done.
  6. Clique no ícone Keys & Certs Management no Painel de Controle.
  7. Clique em Keys na página que aparece. Uma lista de chaves é exibida, duas das quais estão em vermelho.
  8. Clique em oauth-tfim-tep. . O painel de configuração Configure Crypto Key é exibido.
  9. Faça o upload do arquivo oauth-tfim-tep-privkey.pem a partir do arquivo, zip como mostrado na Figura 5.
    Figura 5. Configuração da chave criptografada
    Configuração da chave criptografada
  10. Clique em Apply. O objeto faz a transição para o estado "Up".
  11. Digite cert na caixa Search da área de janela de navegação e clique em Crypto Certificate. . Uma lista de objetos de certificado é exibida.
  12. Clique em oauth-tfim-tep (aparece em letras vermelhas).
  13. Faça o upload do arquivo oauth-tfim-tep-sscert.pem , como mostrado na Figura 6.
    Figura 6. Objeto Crypto Certificate
    Objeto Crypto Certificate
  14. Clique em Apply. O objeto faz a transição para o estado "Up".
  15. Digite SSL na caixa de procura. Clique em SSL Proxy Profile. . Uma lista de objetos de perfil proxy SSL aparece. Dois perfis marcados como "new" são exibidos no estado Up, como mostrado na Figura 7.
    Figura 7. Listagem de perfil proxy SSL
    Listagem de perfil proxy SSL

Nesse ponto, é necessário fazer o upload de uma folha de estilo para o dispositivo:

  1. Faça o download da folha de estilo bearer.xsl fornecida para sua unidade local.
  2. Clique em Control Panel no alto da área de janela de navegação.
  3. Clique no ícone File Management .
  4. Clique em Actions na lateral da pasta local e selecione Upload.
  5. Faça o upload do arquivo bearer.xsl .

Os procedimentos agora foram concluídos.


Criar um terminal de Federated Identity Management

Esse objeto na configuração do DataPower representa a configuração de como entrar em contato com o servidor Federated Identity Management remoto. Esses valores permitem que o dispositivo se conecte com sucesso ao servidor Federated Identity Management. O objeto resultante será usado na configuração de uma política de AAA.

  1. Digite IBM Tivoli Federated Identity Manager na barra de procura e clique em Add para criar um novo objeto de terminal do Federated Identity Management.
  2. Defina o nome para tfim-sts.
  3. Defina o tipo de terminal para OAuth STS.
  4. Defina o servidor para o endereço IP fornecido para o servidor do Federated Identity Management (como 192.168.100.105).
  5. Defina a porta para 9443.
  6. Defina o modo de compatibilidade para Versão 6.2.
  7. Defina o parâmetro Applies-To Address para https://<TFIM_IP>:9443/sps/<TFIM_Federation>/oauth20.

    Substituindo o endereço IP fornecido para o servidor TFIM por <TFIM_IP> e o nome da Federação TFIM por <TFIM_Federation>.

  8. Para o perfil proxy SSL, selecione o tfim-oauth que foi importado anteriormente. Esse perfil proxy contém uma credencial de validação para autenticar o servidor Federated Identity Management. Como uma melhor prática, configure o perfil proxy SSL para autenticar o servidor do Federated Identity Management antes de enviar o token de acesso e as credenciais do ponto de execução. Isso pode ser feito adicionando o certificado SSL do servidor Federated Identity Management ao objeto Crypto Validation Credential do perfil proxy SSL.

    Os campos Username e Password são usados como credenciais de autenticação básicas para o dispositivo na conexão ao terminal de validação do Federated Identity Management. Esse usuário é configurado no servidor do Federated Identity Management com as permissões para enviar solicitações WS-Trust.

  9. Defina o nome de usuário para dp_tep como mostrado na Figura 8.
  10. Defina a senha e a confirmação de senha para p4$$w02d.
  11. Clique em Apply.
    Figura 8. Configuração do servidor do Federated Identity Management
    Configuração do servidor do Federated Identity Management

Criar uma política de AAA

O DataPower usa uma política de AAA para autenticar o cliente OAuth fazendo uma solicitação para o recurso, e também para verificar o token de acesso apresentado pelo cliente.

  1. Digite AAA Policy na barra de procura e clique em Add para criar um novo objeto de política de AAA.
  2. Defina o nome para oauth-tfim-aaa como mostra a Figura 9.
    Figura 9. Guia principal da política de AAA
    Guia principal da política de AAA
  3. Na guia Extract Identity, marque Client IP Address, conforme exibido na Figura 10.
    Figura 10. Guia AAA Policy Extract Identity
    Guia AAA Policy Extract Identity
  4. Na guia Authenticate, selecione Custom Template como o método. Como a URL, selecione local:///bearer.xsl, como mostrado na Figura 11. Isso permite que todas as solicitações sejam enviadas para a etapa de autenticação com sucesso. Isso serve para permitir que qualquer cliente com acesso ao token de acesso (access_token, neste caso) use-o. Você pode ter um caso de uso em que gostaria de autenticar o cliente. Isso pode ser feito usando as etapas EI e AU como normalmente se faria para uma política de AAA.
    Figura 11. Guia AAA Policy Authenticate
    Guia AAA Policy Authenticate
  5. Na guia Extract Resource, marque URL Sent by Client, como mostra a Figura 12.
    Figura 12. Guia AAA Policy Extract Resource
    Guia AAA Policy Extract Resource
  6. Na guia Authorize, selecione OAuth como o método.
  7. Selecione Maximum para armazenar em cache os resultados da autorização e defina Cache Lifetime para 60 segundos, como mostra a Figura 12. Isso configura a política de AAA para armazenar em cache os resultados da autorização OAuth do Federated Identity Management por até 60 segundos. O Time To Live (TTL) efetivo será menor se o servidor do Federated Identity Management indicar que o token de acesso expira mais cedo. Selecione TFIM Authorization endpoint como OAuth Endpoint Type.
  8. Para o TFIM Endpoint, selecione tfim-sts, que é o objeto TFIM Endpoint criado na etapa anterior.
  9. Defina Enforce Scope para on.
    Figura 13. Guia AAA Policy Authorize
    Guia AAA Policy Authorize
  10. Clique em Apply.

Criar um firewall XML

Neste caso, será usado um serviço de Firewall XML para aceitar solicitações de recurso de entrada, validar o token de acesso e permitir ou negar o acesso ao recurso solicitado. Um Gateway Multiprotocolo também pode ser usado.

  1. Digite Advanced na procura de navegação e clique em New Advanced Firewall.
  2. Insira tfim-oauth-ep no campo Name como mostra a Figura 14.
  3. Defina Local IP Address para 0.0.0.0 e defina Port Number para o valor não em uso no dispositivo, como 8888.
  4. Selecione tfim-oauth-ep-cp para o Reverse (Server) Crypto Profile.
  5. Defina o Firewall Type para Loopback. Observe que este artigo usa um loopback somente para fins de demonstração. Normalmente, um destino de backend é usado.
  6. Altere Request Type para Non-XML.
  7. Altere Response Type para XML.
    Figura 14. Configuração avançada de Firewall XML
    Configuração avançada de Firewall XML

Criar a política de processamento

Agora será criada a política de processamento para o serviço.

  1. Clique em + sob Processing Policy. Uma nova janela é aberta.
  2. Insira tfim-oauth-ep no campo Name como mostra a Figura 15.
  3. Clique em New Rule. Uma nova linha de regra de processamento aparece com a ação Match destacada.
  4. Defina Rule Direction para Client to Server.
  5. Clique duas vezes na ação Match. Uma nova janela é aberta.
  6. Clique em + para criar uma nova Matching Rule.
  7. Configure a Matching Rule da seguinte maneira:
    • Nome: All
    • Regra de correspondência: Match Type URL; URL Match *
  8. Clique em Done ou em Apply , conforme o necessário para retornar ao painel Processing Policy.
  9. Arraste uma ação Advanced para a linha de processamento e clique duas vezes nela.
  10. Selecione Convert Query Params to XML e clique em Next. Clique em Done.
  11. Arraste uma ação AAA para a linha de processamento e clique duas vezes nela.
  12. Selecione oauth-tfim-aaa como AAA Policy. Clique em Done.
    Figura 15. Ação de AAA
    Ação de AAA

    A regra de solicitação lembra a ilustração mostrada na Figura 16.

    Figura 16. Regra da política de processamento
    Regra da política de processamento
  13. Clique em New Rule. Uma nova linha de regra de processamento aparece com a ação Match destacada.
  14. Defina Rule Direction para Server to Client.
  15. Clique duas vezes na ação Match destacada.
  16. Selecione All na lista suspensa de regras de correspondência disponíveis e clique em Done.
  17. Clique em Apply Policy. . A janela Policy fecha.
  18. Clique em Apply para concluir a configuração do Firewall XML. Clique em Save Config para salvar seu trabalho.
  19. Acesse a configuração do servidor de Firewall XML e clique em Show Probe conforme mostrado na Figura 18. Uma nova janela é aberta.
    Figura 17. Mostrar análise
    Mostrar análise
  20. Clique em Enable Probe conforme exibido na Figura 18.
    Figura 18. Analisar lista de transação
    Analisar lista de transação

Enviar solicitação

No exemplo a seguir, há um cliente OAuth baseado na web recebendo na porta 3.000 que realiza o handshake da solicitação de token OAuth com o servidor Federated Identity Management. A resposta é um token de acesso válido que pode ser usado para solicitar o recurso de um servidor de recursos, que agora é protegido pelo dispositivo DataPower. Nesse caso, o URI da solicitação é usado como o escopo.

  1. Primeiro, use o seguinte comando cURL para obter um token de acesso do servidor do Federated Identity Management:
    curl -k https://oauthclient:3000/getUserInfo/uid/12345678

    Isso retorna um nó <access_token> similar ao seguinte:

    <access_token>FIsqmCZ5yp1GFYh6iYm7</access_token>
  2. Extraia o token e execute o seguinte comando cURL:
    curl -k https://<DataPower_IP>:<ResourceServer_Port>/getUserInfo/
     uid/12345678 -H "Authorization: Bearer <AccessToken>" –d 
     "my-name=<name>&my-job=<title>"
  3. Substitua o endereço IP do DataPower para <DataPower_IP>, a porta usada para o Firewall XML para <ResourceServer_Port>, o access_token extraído do último comando para <AccessToken>, seu nome para <name> e seu cargo para <title>.

    Isso envia o token de acesso para o ponto de execução do token criado como um token de acesso no cabeçalho Authorization. Você deve receber uma resposta similar à seguinte:

    <?xml version="1.0" encoding="UTF-8"?>
    <request><url>/getUserInfo/uid/12345678</url><base-url>/ 
     getUserInfo/uid/12345678</base-url><args src="url"/><args 
     src="body"><arg name="name">Dave</arg><arg 
     name="title">Engineer</arg></args></request>

Resolução de problemas

  1. Na janela Probe Transaction, clique na lupa em qualquer uma das transações bem-sucedidas (consulte a Figura 19).
    Figura 19. Analisar detalhe da transação
    Analisar detalhe da transação
  2. Clique no ícone de ação AAA (consulte a Figura 20).
    Figura 20. Analisar rastreio da extensão
    Analisar rastreio da extensão
  3. Clique em (show nodeset) na coluna request para consultar a solicitação WS-Trust enviada para o terminal de Validação TFIM.
  4. Clique em (show nodeset) na coluna response para ver a resposta WS-Trust retornada do terminal de Validação TFIM. Na Figura 21, observe os nós stsuuser:Attribute com type="urn:ibm:names:ITFIM:oauth:response:attribute".
    Figura 21. Exibição de Analisar nó de resposta
    Exibição de Analisar nó de resposta
  5. Clique na lupa imediatamente após a ação AAA. Selecione a guia Headers (consulte a Figura 22). Observe que há novos cabeçalhos de solicitação para cada um dos nós stsuuser:Attribute na resposta WS-Trust. Eles são definidos para consumo pelo backend e podem ser desabilitados configurando Export Response Attributes para "off" na política de AAA. Esses valores também estão disponíveis como entrada para o método XSLT personalizado de AAA PostProcessing.
    Figura 22. Exibição de Analisar Cabeçalhos
    Exibição de Analisar Cabeçalhos

Conclusão

Este artigo mostrou como usar o DataPower como o ponto de execução do servidor de recursos em uma troca de protocolo OAuth, bem como demonstrou um exemplo de configuração implementando essa função.

A especificação do protocolo OAuth abrange muitos outros cenários. Esta série de artigos sobre a implementação do DataPower do protocolo OAuth fornece mais detalhes sobre como o DataPower pode agir em outras capacidades em um intercâmbio de OAuth. Para informações adicionais, consulte o restante da série de artigos a seguir:

Os seguintes artigos na série estarão disponíveis nas próximas semanas:

  • Part 8: Customizing the Websphere DataPower native support for OAuth scope, identity processing, and additional processing
  • Part 9: Customizing the DataPower native support for OAuth authorization codes and access tokens
  • Part 10: Troubleshooting DataPower OAuth protocol support

Agradecimentos

Os autores gostariam de agradecer a Shiu-Fun Poon por sua revisão deste artigo.


Downloads

DescriçãoNomeTamanho
Sample configuration fileOAuth-TFIM-SSLProfile-base.zip467KB
Sample configuration fileOAuth-TFIM-SSLProfile-crypto.zip2KB
Sample filebearer.zip1KB

Recursos

Aprender

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

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

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

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

Elija su nombre para mostrar



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.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

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

 


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


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tivoli, WebSphere
ArticleID=831993
ArticleTitle=Usando OAuth em IBM WebSphere DataPower Appliances, Parte 7: Usando o DataPower com o Tivoli Federated Identity Manager para oferecer suporte a OAuth 2.0
publish-date=08312012