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á.
Usando autenticação e autorização OAuth 2.0 para Amazon MQ para RabbitMQ
Este tutorial descreve como configurar a autenticação OAuth 2.0 para seus corretores do Amazon MQ para RabbitMQ usando o Amazon Cognito como provedor 2.0. OAuth
nota
O Amazon Cognito não está disponível na China (Pequim) e na China (Ningxia).
Importante
Este tutorial é específico para o Amazon Cognito, mas você pode usar outros provedores de identidade ()IdPs. Para obter mais informações, consulte Exemplos de autenticação OAuth 2.0
Nesta página
Pré-requisitos para configurar a autenticação 2.0 OAuth
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
Pré-requisitos para configurar o Amazon Cognito
-
Configure um endpoint do Amazon Cognito criando um grupo de usuários. Para fazer isso, consulte o blog intitulado Como usar a OAuth versão 2.0 no Amazon Cognito: saiba mais sobre as diferentes concessões da OAuth versão 2.0
. -
Crie um servidor de recursos chamado
rabbitmq
no grupo de usuários com os seguintes escopos definidos:read:all
write:all
,configure:all
, e.tag:administrator
Esses escopos serão associados às permissões do RabbitMQ.Para obter informações sobre a criação de um servidor de recursos, consulte Definição de um servidor de recursos para seu grupo de usuários (AWS Management Console) no Guia do desenvolvedor do Amazon Cognito.
-
Crie os seguintes clientes de aplicativos:
-
Cliente de aplicativo para o grupo de usuários do tipo
Machine-to-Machine application
. Este é um cliente confidencial com um segredo de cliente que será usado pelos clientes do RabbitMQ AMQP. Para obter mais informações sobre clientes de aplicativos e como criar um, consulte Tipos de clientes de aplicativos e Criação de um cliente de aplicativo. -
Cliente de aplicativo para o grupo de usuários do tipo
Single-page application
. Esse é um cliente público que será usado para fazer login de usuários no console de gerenciamento do RabbitMQ. Você deve atualizar esse cliente do aplicativo para incluir o endpoint do agente Amazon MQ for RabbitMQ que você criará no procedimento a seguir como uma URL de retorno de chamada permitida. Para obter mais informações, consulte Configuração do login gerenciado com o console do 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 OAuth 2.0 foi bem-sucedida ou não. -
AWS CLI versã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 usando AWS CLI
O procedimento a seguir mostra como configurar a autenticação OAuth 2.0 para seus corretores do Amazon MQ para RabbitMQ usando 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.
-
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" } -
Crie um arquivo de configuração chamado
rabbitmq.conf
para usar 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 the AWS CDK stack to deploy Amazon Cognito, this is one of the stack outputs. auth_oauth2.jwks_url =
${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:administratorEssa configuração usa aliases de escopo
para mapear os escopos definidos no Amazon Cognito para escopos compatíveis com o RabbitMQ. -
Atualize a configuração usando o AWS CLI comando update-configuration, conforme mostrado no exemplo a seguir. Neste comando, adicione o ID de configuração que você recebeu na resposta da Etapa 1 deste 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": [] } -
Crie um broker com a configuração OAuth 2.0 que você criou na Etapa 2 deste procedimento. Para fazer isso, use o AWS CLI comando create-broker conforme mostrado no exemplo a seguir. Neste comando, forneça 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
e2
.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" } -
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. Neste comando, forneça o ID do broker que você obteve 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
describe-broker
comando 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 deconfig_managed
autenticação indica que o agente usa OAuth 2 métodos de autenticação.{ "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
Para fazer login no console de gerenciamento do RabbitMQ usando OAuth2, o endpoint do broker precisa ser adicionado como uma URL de retorno de chamada válida no cliente do aplicativo Amazon Cognito correspondente. Para obter mais informações, consulte a Etapa 5 na configuração do nosso exemplo de pilha de CDK do Amazon Cognito
. -
Verifique a autenticação e autorização OAuth 2.0 com o
perf-test.sh
script a seguir.Use esse script bash para testar a conectividade com seu agente Amazon MQ for 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 corretor 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, você precisará fornecer os seguintes valores:
-
CLIENT_ID
eCLIENT_SECRET
: Você pode encontrar esses valores na página de clientes de aplicativos do console do Amazon Cognito. -
Domínio do Cognito: você pode encontrá-lo no console do Amazon Cognito. Em Marca, escolha Domínio. Na página Domínio, você pode encontrar esse valor na seção Servidores de recursos.
-
Endpoint do agente Amazon MQ: você pode encontrar 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 OAuth 2.0 e autenticação simples com o Amazon Cognito
Ao criar um agente com autenticação OAuth 2.0, você pode especificar um dos seguintes métodos de autenticação:
-
OAuth Somente 2.0: para usar esse método, não forneça nome de usuário e senha ao criar o corretor. O procedimento anterior mostra como usar somente o método de autenticação OAuth 2.0.
-
Autenticação OAuth 2.0 e simples: para usar esse método, forneça um nome de usuário e uma senha ao criar o corretor. Além disso, adicione
auth_backends.2 = internal
à configuração do seu broker, 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.
-
Para usar os dois métodos de autenticação, crie sua configuração de 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_url =
${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 com o RabbitMQ. -
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>
"}]' -
Verifique se o status do agente e a configuração para configurar o método de autenticação foram bem-sucedidos, conforme descrito nas etapas 5 e 6 do Configurando a autenticação OAuth 2.0 com o Amazon Cognito procedimento.