Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de la autenticación y la autorización OAuth 2.0 para Amazon MQ para RabbitMQ
En este tutorial se describe cómo configurar la autenticación OAuth 2.0 para sus agentes de Amazon MQ para RabbitMQ que utilizan Amazon Cognito como proveedor de la versión 2.0. OAuth
nota
Amazon Cognito no está disponible en China (Pekín) ni en China (Ningxia).
importante
Este tutorial es específico de Amazon Cognito, pero puede utilizar otros proveedores de identidad ()IdPs. Para obtener más información, consulte los ejemplos de autenticación OAuth 2.0
En esta página
Requisitos previos para configurar la autenticación OAuth 2.0
Puede configurar los recursos de Amazon Cognito necesarios en este tutorial mediante la implementación de la AWS CDK pila, el complemento Amazon Cognito stack for OAuth RabbitMQ
Requisitos previos para configurar Amazon Cognito
-
Configure un punto final de Amazon Cognito mediante la creación de un grupo de usuarios. Para ello, consulte el blog titulado Cómo utilizar la OAuth versión 2.0 en Amazon Cognito: más información sobre las diferentes subvenciones de la OAuth versión 2.0
. -
Cree un servidor de recursos llamado
rabbitmq
en el grupo de usuarios con los siguientes ámbitos definidos:read:all
,write:all
configure:all
, y.tag:administrator
Estos ámbitos se asociarán a los permisos de RabbitMQ.Para obtener información sobre la creación de un servidor de recursos, consulte Definir un servidor de recursos para su grupo de usuarios (AWS Management Console) en la Guía para desarrolladores de Amazon Cognito.
-
Cree los siguientes clientes de aplicaciones:
-
Cliente de aplicación para el grupo de usuarios del tipo
Machine-to-Machine application
. Se trata de un cliente confidencial con un secreto de cliente que se utilizará para los clientes AMQP de RabbitMQ. Para obtener más información sobre los clientes de aplicaciones y cómo crear uno, consulte Tipos de clientes de aplicaciones y Creación de un cliente de aplicaciones. -
Cliente de aplicación para el grupo de usuarios del tipo
Single-page application
. Se trata de un cliente público que se utilizará para iniciar sesión en la consola de administración de RabbitMQ. Debe actualizar este cliente de aplicación para incluir el punto final del bróker Amazon MQ for RabbitMQ que creará en el siguiente procedimiento como URL de devolución de llamada permitida. Para obtener más información, consulte Configuración del inicio de sesión gestionado con la consola de Amazon Cognito.
-
Requisito previo para configurar Amazon MQ
-
Una instalación de Docker
que funcione para ejecutar un script bash que verifique si la configuración OAuth 2.0 se ha realizado correctamente o no. -
AWS CLI versión >=
2.28.23
para que añadir un nombre de usuario y una contraseña sea opcional durante la creación del bróker.
Configuración de la autenticación OAuth 2.0 con Amazon Cognito mediante AWS CLI
El siguiente procedimiento muestra cómo configurar la autenticación OAuth 2.0 para sus corredores de Amazon MQ para RabbitMQ que utilizan Amazon Cognito como IDP. Este procedimiento se utiliza AWS CLI para crear y configurar los recursos necesarios.
En el siguiente procedimiento, asegúrese de reemplazar los valores de los marcadores de posición, como el ID de configuración y la revisión, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>
por sus valores <2>
reales.
-
Cree una nueva configuración mediante el AWS CLI comando create-configuration, como se muestra en el siguiente ejemplo.
aws mq create-configuration \ --name "
rabbitmq-oauth2-config
" \ --engine-type "RABBITMQ" \ --engine-version "3.13"Este comando devuelve una respuesta similar a la del siguiente ejemplo.
{ "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" } -
Cree un archivo de configuración llamado
rabbitmq.conf
a usar OAuth 2.0 como método de autenticación y autorización, como se muestra en el siguiente ejemplo.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:administratorEsta configuración utiliza alias de ámbito para asignar
los ámbitos definidos en Amazon Cognito a ámbitos compatibles con RabbitMQ. -
Actualice la configuración mediante el comando update-configuration, como se muestra en el siguiente ejemplo AWS CLI . En este comando, añada el identificador de configuración que recibió en la respuesta al paso 1 de este procedimiento. Por ejemplo,
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)"Este comando devuelve una respuesta similar a la del siguiente ejemplo.
{ "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": [] } -
Cree un broker con la configuración OAuth 2.0 que creó en el paso 2 de este procedimiento. Para ello, utilice el AWS CLI comando create-broker como se muestra en el siguiente ejemplo. En este comando, indique el identificador de configuración y el número de revisión que obtuvo en las respuestas de los pasos 1 y 2, respectivamente. Por ejemplo,
c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca
y2
.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>
}' \Este comando devuelve una respuesta similar a la del siguiente ejemplo.
{ "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" } -
Compruebe que el estado del bróker pasa de
CREATION_IN_PROGRESS
aRUNNING
, mediante el AWS CLI comando describe-broker, tal como se muestra en el siguiente ejemplo. En este comando, proporcione el ID de corredor que obtuvo en el resultado del paso anterior. Por ejemplo,.b-2a1b5133-a10c-49d2-879b-8c176c34cf73
aws mq describe-broker \ --broker-id "
<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>
"Este comando devuelve una respuesta similar a la del siguiente ejemplo. La siguiente respuesta es una versión abreviada del resultado completo que devuelve el
describe-broker
comando. Esta respuesta muestra el estado del agente y la estrategia de autenticación utilizada para protegerlo. En este caso, la estrategia deconfig_managed
autenticación indica que el agente utiliza OAuth dos métodos de autenticación.{ "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
Para iniciar sesión en la consola de administración de RabbitMQ mediante OAuth2, es necesario añadir el punto de conexión del agente como una URL de devolución de llamada válida en el cliente de la aplicación Amazon Cognito correspondiente. Para obtener más información, consulte el paso 5 de la configuración de nuestro ejemplo de pila de CDK de Amazon Cognito
. -
Verifique la autenticación y la autorización OAuth 2.0 con el siguiente
perf-test.sh
script.Utilice este script bash para probar la conectividad con su bróker de Amazon MQ for RabbitMQ. Este script obtiene un token de Amazon Cognito y verifica si la conexión se configuró correctamente. Si se ha configurado correctamente, verá que su agente publica y consume mensajes.
Si recibe un
ACCESS_REFUSED
error, puede solucionar los problemas de configuración utilizando los CloudWatch registros de su agente. Encontrará el enlace al grupo de CloudWatch registros de su agente en la consola de Amazon MQ.En este script, deberá proporcionar los siguientes valores:
-
CLIENT_ID
yCLIENT_SECRET
: Puede encontrar estos valores en la página de clientes de aplicaciones de la consola Amazon Cognito. -
Dominio de Cognito: lo encontrará en la consola de Amazon Cognito. En Marca, selecciona Dominio. En la página Dominio, encontrarás este valor en la sección Servidores de recursos.
-
Punto de enlace del corredor de Amazon MQ: puede encontrar este valor en Conexiones, en la página de detalles del corredor de la consola de 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 -
Configuración de la OAuth versión 2.0 y la autenticación simple con Amazon Cognito
Al crear un agente con autenticación OAuth 2.0, puede especificar uno de los siguientes métodos de autenticación:
-
OAuth Solo en la versión 2.0: para usar este método, no proporcione un nombre de usuario ni una contraseña al crear el corredor. El procedimiento anterior muestra cómo utilizar únicamente el método de autenticación OAuth 2.0.
-
Tanto la autenticación OAuth 2.0 como la simple: para usar este método, proporcione un nombre de usuario y una contraseña al crear el corredor. Además,
auth_backends.2 = internal
añádalo a la configuración de su corredor, como se muestra en el siguiente procedimiento.
En el siguiente procedimiento, asegúrese de reemplazar los valores de los marcadores de posición, como <ConfigurationId>
y<Revision>
, por sus valores reales.
-
Para utilizar ambos métodos de autenticación, cree la configuración de su agente, como se muestra en el siguiente ejemplo.
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:*/*Esta configuración utiliza alias de ámbito para asignar
los ámbitos definidos en Amazon Cognito a ámbitos compatibles con RabbitMQ. -
Cree un agente que utilice ambos métodos de autenticación, como se muestra en el siguiente ejemplo.
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>
"}]' -
Compruebe que el estado del corredor y la configuración para configurar el método de autenticación se hayan realizado correctamente, tal como se describe en los pasos 5 y 6 del Configuración de la autenticación OAuth 2.0 con Amazon Cognito procedimiento.