View a markdown version of this page

Uso da autorização e da autenticação OAuth 2.0 para Amazon MQ para RabbitMQ - Amazon MQ

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Uso da autorização e da autenticação OAuth 2.0 para Amazon MQ para RabbitMQ

Esse tutorial descrever como configura a autenticação OAuth 2.0 para agentes do Amazon MQ para RabbitMQ usando o Amazon Cognito como provedor do OAuth 2.0.

nota

O Amazon Cognito está disponível nas regiões China (Pequim) e China (Ningxia).

Importante

Este tutorial é específico para o Amazon Cognito, mas você pode usar outros provedores de identidade ()IdPs. Para saber mais, consulte Exemplos de autenticação OAuth 2.0.

Pré-requisitos para configurar a autenticação OAuth 2.0

Você pode definir os recursos do Amazon Cognito necessários neste tutorial implantando a pilha, o plug-in AWS CDK Amazon Cognito stack for RabbitMQ OAuth 2. Se você estiver configurando o Amazon Cognito manualmente, certifique-se de atender aos seguintes pré-requisitos antes de configurar o OAuth 2.0 nos agentes do Amazon MQ para RabbitMQ:

Pré-requisitos para configurar o Amazon Cognito
Pré-requisito para configurar o Amazon MQ
  • Uma instalação funcional do Docker para executar um script bash que verifica se a configuração do OAuth 2.0 foi bem-sucedida ou não.

  • AWS CLIversão >= 2.28.23 para tornar opcional a adição de um nome de usuário e senha durante a criação da corretora.

Configurando a autenticação OAuth 2.0 com o Amazon Cognito usandoAWS CLI

O procedimento a seguir mostra como configurar a autenticação OAuth 2.0 para os agentes do Amazon MQ para RabbitMQ ao usar o Amazon Cognito como IdP. Esse procedimento é usado AWS CLI para criar e configurar os recursos necessários.

No procedimento a seguir, certifique-se de substituir os valores do espaço reservado, como ConfigurationId e Revision, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> e<2>, por seus valores reais.

  1. Crie uma nova configuração usando o AWS CLI comando create-configuration, conforme mostrado no exemplo a seguir.

    aws mq create-configuration \ --name "rabbitmq-oauth2-config" \ --engine-type "RABBITMQ" \ --engine-version "3.13"

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "AuthenticationStrategy": "simple", "Created": "2025-07-17T16:03:01.759943+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:03:01.759000+00:00", "Description": "Auto-generated default for rabbitmq-oauth2-config on RabbitMQ 3.13", "Revision": 1 }, "Name": "rabbitmq-oauth2-config" }
  2. Crie um arquivo de configuração chamado rabbitmq.conf para usar o OAuth 2.0 como método de autenticação e autorização, conforme mostrado no exemplo a seguir.

    auth_backends.1 = oauth2 # FIXME: Update this value with the token signing key URL of your Amazon Cognito user pool. # If you used theAWS CDKstack to deploy Amazon Cognito, this is one of the stack outputs. auth_oauth2.jwks_uri = ${RabbitMqOAuth2TestStack.JwksUri} auth_oauth2.resource_server_id = rabbitmq # Amazon Cognito does not include an audience field in access tokens auth_oauth2.verify_aud = false # Amazon Cognito does not allow * in its custom scopes. Use aliases to translate between Amazon Cognito and RabbitMQ. auth_oauth2.scope_prefix = rabbitmq/ auth_oauth2.scope_aliases.1.alias = rabbitmq/read:all auth_oauth2.scope_aliases.1.scope = rabbitmq/read:*/* auth_oauth2.scope_aliases.2.alias = rabbitmq/write:all auth_oauth2.scope_aliases.2.scope = rabbitmq/write:*/* auth_oauth2.scope_aliases.3.alias = rabbitmq/configure:all auth_oauth2.scope_aliases.3.scope = rabbitmq/configure:*/* # Allow OAuth 2.0 login for RabbitMQ management console management.oauth_enabled = true # FIXME: Update this value with the client ID of your public application client management.oauth_client_id = ${RabbitMqOAuth2TestStack.ManagementConsoleAppClientId} # FIXME: Update this value with the base JWKS URI (without /.well-known/jwks.json) auth_oauth2.issuer = ${RabbitMqOAuth2TestStack.Issuer} management.oauth_scopes = rabbitmq/tag:administrator

    Essa configuração usa aliases de escopo para mapear os escopos definidos no Amazon Cognito para escopos compatíveis do RabbitMQ.

  3. Atualize a configuração usando o AWS CLI comando update-configuration, conforme mostrado no exemplo a seguir. Nesse comando, adicione o ID de configuração recebido na resposta da Etapa 1 do procedimento. Por exemplo, .c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca

    aws mq update-configuration \ --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \ --data "$(cat rabbitmq.conf | base64 --wrap=0)"

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-b600ac8e-8183-4f74-a713-983e59f30e3d", "Created": "2025-07-17T16:57:04.520931+00:00", "Id": "c-b600ac8e-8183-4f74-a713-983e59f30e3d", "LatestRevision": { "Created": "2025-07-17T16:57:39.172000+00:00", "Revision": 2 }, "Name": "rabbitmq-oauth2-config", "Warnings": [] }
  4. Crie um agente com a configuração do OAuth 2.0 criada na Etapa 2 deste procedimento. Para fazer isso, use o AWS CLI comando create-broker conforme mostrado no exemplo a seguir. Nesse comando, informe o ID de configuração e o número da revisão obtidos nas respostas das etapas 1 e 2, respectivamente. Por exemplo, c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca e 2.

    aws mq create-broker \ --broker-name "rabbitmq-oauth2-broker" \ --engine-type "RABBITMQ" \ --engine-version "3.13" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "CLUSTER_MULTI_AZ" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}' \

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-oauth2-broker:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" }
  5. Verifique se o status do broker muda de CREATION_IN_PROGRESS paraRUNNING, usando o AWS CLI comando describe-broker, conforme mostrado no exemplo a seguir. Nesse comando, informe o ID do agente obtido no resultado da etapa anterior. Por exemplo, b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

    aws mq describe-broker \ --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"

    Esse comando retorna uma resposta semelhante ao exemplo a seguir. A resposta a seguir é uma versão abreviada da saída completa que o comando describe-broker retorna. Essa resposta mostra o status do agente e a estratégia de autenticação usada para proteger o agente. Nesse caso, a estratégia de autenticação config_managed indica que o agente usa o método de autenticação OAuth 2.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }

    Para fazer login no console de gerenciamento do RabbitMQ usando o OAuth2, o endpoint do agente precisa ser adicionado como uma URL de retorno de chamada válida no cliente da aplicação Amazon Cognito correspondente. Para saber mais, consulte a Etapa 5 na configuração do nosso exemplo de pilha de CDK do Amazon Cognito.

  6. Verifique a autenticação e a autorização do OAuth 2.0 com o script a seguir perf-test.sh.

    Use esse script bash para testar a conectividade com o agente do Amazon MQ para RabbitMQ. Esse script obtém um token do Amazon Cognito e verifica se a conexão foi configurada corretamente. Se for configurado com sucesso, você verá seu agente publicar e consumir mensagens.

    Se você receber um ACCESS_REFUSED erro, poderá solucionar seus problemas de configuração usando os CloudWatch registros do seu corretor. Você pode encontrar o link para o grupo de CloudWatch registros do seu agente no console do Amazon MQ.

    Nesse script, é necessário fornecer os seguintes valores:

    • CLIENT_ID e CLIENT_SECRET: você pode acessar esses valores na página de clientes de aplicativos do console do Amazon Cognito.

    • Domínio Cognito: você pode acessar isso no console do Amazon Cognito. Em Marca, escolha Domínio. Na página Domínio, você pode consultar esse valor na seção Servidores de recursos.

    • Endpoint do agente Amazon MQ: você pode consultar esse valor em Conexões na página de detalhes do agente no console do Amazon MQ.

    #! /bin/bash set -e # Client information ## FIXME: Update this value with the client ID and secret of your confidential application client CLIENT_ID=${RabbitMqOAuth2TestStack.AmqpAppClientId} CLIENT_SECRET=${RabbitMqOAuth2TestStack.AmqpAppClientSecret} # FIXME: Update this value with the domain of your Amazon Cognito user pool RESPONSE=$(curl -X POST ${RabbitMqOAuth2TestStack.TokenEndpoint} \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&scope=rabbitmq/configure:all rabbitmq/read:all rabbitmq/tag:administrator rabbitmq/write:all") # Extract the access_token from the response. # This token will be passed in the password field when connecting to the broker. # Note that the username is left blank, the field is ignored by the plugin. BROKER_PASSWORD=$(echo ${RESPONSE} | jq -r '.access_token') # FIXME: Update this value with the endpoint of your broker. For example, b-89424106-7e0e-4abe-8e98-8de0dada7630.mq.us-east-1.on.aws. BROKER_DNS=<broker_dns> CONNECTION_STRING=amqps://:${BROKER_PASSWORD}@${BROKER_DNS}:5671 # Produce/consume messages using the above connection string QUEUES_COUNT=1 PRODUCERS_COUNT=1 CONSUMERS_COUNT=1 PRODUCER_RATE=1 docker run -it --rm --ulimit nofile=40960:40960 pivotalrabbitmq/perf-test:latest \ --queue-pattern 'test-queue-%d' --queue-pattern-from 1 --queue-pattern-to $QUEUES_COUNT \ --producers $PRODUCERS_COUNT --consumers $CONSUMERS_COUNT \ --id "test${QUEUES_COUNT}q${PRODUCERS_COUNT}p${CONSUMERS_COUNT}c${PRODUCER_RATE}r" \ --uri ${CONNECTION_STRING} \ --flag persistent --rate $PRODUCER_RATE

Configuração do OAuth 2.0 e autenticação simples com o Amazon Cognito

Você pode especificar um dos seguintes métodos de autenticação ao criar um agente com autenticação OAuth 2.0:

  • Somente o OAuth 2.0: para usar esse método, forneça um nome de usuário e uma senha quando criar o agente. O procedimento anterior mostra como usar somente o método de autenticação OAuth 2.0.

  • Autenticação simples e a OAuth 2.0: para usar esse método, informe um nome de usuário e uma senha quando criar o agente. Além disso, adicione auth_backends.2 = internal à configuração do agente, conforme mostrado no procedimento a seguir.

No procedimento a seguir, certifique-se de substituir os valores do espaço reservado, como <ConfigurationId> e<Revision>, por seus valores reais.

  1. Para usar os dois métodos de autenticação, crie a configuração do agente, conforme mostrado no exemplo a seguir.

    auth_backends.1 = oauth2 auth_backends.2 = internal # FIXME: Update this value with the token signing key URL of your Amazon Cognito user pool auth_oauth2.jwks_uri = ${RabbitMqOAuth2TestStack.JwksUri} auth_oauth2.resource_server_id = rabbitmq auth_oauth2.verify_aud = false auth_oauth2.scope_prefix = rabbitmq/ auth_oauth2.scope_aliases.1.alias = rabbitmq/read:all auth_oauth2.scope_aliases.1.scope = rabbitmq/read:*/* auth_oauth2.scope_aliases.2.alias = rabbitmq/write:all auth_oauth2.scope_aliases.2.scope = rabbitmq/write:*/* auth_oauth2.scope_aliases.3.alias = rabbitmq/configure:all auth_oauth2.scope_aliases.3.scope = rabbitmq/configure:*/*

    Essa configuração usa aliases de escopo para mapear os escopos definidos no Amazon Cognito para escopos compatíveis do RabbitMQ.

  2. Crie um agente que use os dois métodos de autenticação, conforme mostrado no exemplo a seguir.

    aws mq create-broker \ --broker-name "rabbitmq-oauth2-broker-with-internal-user" \ --engine-type "RABBITMQ" \ --engine-version "3.13" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "CLUSTER_MULTI_AZ" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<ConfigurationId>","Revision": <Revision>}' \ --users '[{"Username":"<myUser>","Password":"<myPassword11>"}]'
  3. Verifique se o status do agente e a configuração para definir o método de autenticação foram bem-sucedidos, conforme descrito nas etapas 5 e 6 do procedimento Configuração da autenticação OAuth 2.0 com o Amazon Cognito.