Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo dell'autenticazione e dell'autorizzazione OAuth 2.0 per Amazon MQ for RabbitMQ
Questo tutorial descrive come configurare l'autenticazione OAuth 2.0 per i broker Amazon MQ for RabbitMQ utilizzando Amazon Cognito come provider 2.0. OAuth
Nota
Amazon Cognito non è disponibile in Cina (Pechino) e Cina (Ningxia).
Importante
Questo tutorial è specifico per Amazon Cognito, ma puoi utilizzare altri provider di identità ()IdPs. Per ulteriori informazioni, consulta Esempi di autenticazione OAuth 2.0
In questa pagina
Prerequisiti per configurare l'autenticazione OAuth 2.0
Puoi impostare le risorse Amazon Cognito richieste in questo tutorial distribuendo lo stack AWS CDK Amazon Cognito stack for RabbitMQ 2 plug-in
Prerequisiti per configurare Amazon Cognito
-
Configura un endpoint Amazon Cognito creando un pool di utenti. A tale scopo, consulta il blog intitolato Come usare OAuth 2.0 in Amazon Cognito: scopri le OAuth diverse
sovvenzioni 2.0. -
Crea un server di risorse chiamato
rabbitmq
nel pool di utenti con i seguenti ambiti definiti:read:all
,,write:all
e.configure:all
tag:administrator
Questi ambiti verranno associati alle autorizzazioni RabbitMQ.Per informazioni sulla creazione di un server di risorse, consulta Definizione di un server di risorse per il pool di utenti (AWS Management Console) nella Amazon Cognito Developer Guide.
-
Crea i seguenti client applicativi:
-
Client applicativo per il tipo di pool di utenti
Machine-to-Machine application
. Si tratta di un client riservato con un client segreto che verrà utilizzato per i client RabbitMQ AMQP. Per ulteriori informazioni sui client applicativi e sulla creazione di un client, consulta Tipi di client di app e Creazione di un client di app. -
Client applicativo per il tipo di pool di utenti
Single-page application
. Si tratta di un client pubblico che verrà utilizzato per accedere gli utenti alla console di gestione di RabbitMQ. Devi aggiornare questo client dell'applicazione per includere l'endpoint del broker Amazon MQ for RabbitMQ che creerai nella procedura seguente come URL di callback consentito. Per ulteriori informazioni, consulta Configurazione dell'accesso gestito con la console Amazon Cognito.
-
Prerequisito per configurare Amazon MQ
-
Un'installazione Docker
funzionante per eseguire uno script bash che verifica se la configurazione OAuth 2.0 è riuscita o meno. -
AWS CLI versione >=
2.28.23
per rendere opzionale l'aggiunta di un nome utente e una password durante la creazione del broker.
Configurazione dell'autenticazione OAuth 2.0 con Amazon Cognito utilizzando AWS CLI
La procedura seguente mostra come configurare l'autenticazione OAuth 2.0 per i broker Amazon MQ for RabbitMQ utilizzando Amazon Cognito come IdP. Questa procedura serve AWS CLI a creare e configurare le risorse necessarie.
Nella procedura seguente, assicuratevi di sostituire i valori segnaposto, come ConfigurationID e Revision, con i relativi valori <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>
effettivi<2>
.
-
Create una nuova configurazione utilizzando il AWS CLI comando create-configuration, come illustrato nell'esempio seguente.
aws mq create-configuration \ --name "
rabbitmq-oauth2-config
" \ --engine-type "RABBITMQ" \ --engine-version "3.13"Questo comando restituisce una risposta simile all'esempio seguente.
{ "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" } -
Create un file di configurazione chiamato
rabbitmq.conf
a utilizzare OAuth 2.0 come metodo di autenticazione e autorizzazione, come illustrato nell'esempio seguente.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:administratorQuesta configurazione utilizza alias di ambito
per mappare gli ambiti definiti in Amazon Cognito a ambiti compatibili con RabbitMQ. -
Aggiorna la configurazione utilizzando il comando update-configuration AWS CLI come mostrato nell'esempio seguente. In questo comando, aggiungi l'ID di configurazione ricevuto nella risposta del passaggio 1 di questa procedura. Ad esempio,
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)"Questo comando restituisce una risposta simile all'esempio seguente.
{ "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": [] } -
Crea un broker con la configurazione OAuth 2.0 creata nel passaggio 2 di questa procedura. A tale scopo, utilizzate il AWS CLI comando create-broker come illustrato nell'esempio seguente. In questo comando, fornite l'ID di configurazione e il numero di revisione ottenuti rispettivamente nelle risposte dei passaggi 1 e 2. Ad esempio
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>
}' \Questo comando restituisce una risposta simile all'esempio seguente.
{ "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" } -
Verificate che lo stato del broker passi da
CREATION_IN_PROGRESS
aRUNNING
, utilizzando il AWS CLI comando describe-broker, come illustrato nell'esempio seguente. In questo comando, fornisci l'ID broker che hai ottenuto nel risultato del passaggio precedente. Ad esempio,.b-2a1b5133-a10c-49d2-879b-8c176c34cf73
aws mq describe-broker \ --broker-id "
<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>
"Questo comando restituisce una risposta simile all'esempio seguente. La risposta seguente è una versione abbreviata dell'output completo restituito dal
describe-broker
comando. Questa risposta mostra lo stato del broker e la strategia di autenticazione utilizzata per proteggere il broker. In questo caso, la strategia diconfig_managed
autenticazione indica che il broker utilizza OAuth 2 metodi di autenticazione.{ "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
Per accedere alla console di gestione RabbitMQ utilizzando OAuth2, l'endpoint del broker deve essere aggiunto come URL di callback valido nel client dell'app Amazon Cognito corrispondente. Per ulteriori informazioni, consulta la Fase 5 della configurazione del nostro stack Amazon Cognito CDK
di esempio. -
Verifica l'autenticazione e l'autorizzazione OAuth 2.0 con lo script seguente.
perf-test.sh
Usa questo script bash per testare la connettività al tuo broker Amazon MQ for RabbitMQ. Questo script ottiene un token da Amazon Cognito e verifica se la connessione è stata configurata correttamente. Se è configurato correttamente, vedrai il tuo broker pubblicare e consumare messaggi.
Se ricevi un
ACCESS_REFUSED
errore, puoi risolvere i problemi delle impostazioni di configurazione utilizzando CloudWatch i log del tuo broker. Puoi trovare il link per il gruppo di CloudWatch log del tuo broker nella console Amazon MQ.In questo script, dovrai fornire i seguenti valori:
-
CLIENT_ID
eCLIENT_SECRET
: puoi trovare questi valori nella pagina App client della console Amazon Cognito. -
Dominio Cognito: puoi trovarlo nella console Amazon Cognito. In Branding, scegli Dominio. Nella pagina Dominio, puoi trovare questo valore nella sezione Server di risorse.
-
Endpoint del broker Amazon MQ: puoi trovare questo valore in Connessioni nella pagina dei dettagli del broker della console 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 -
Configurazione OAuth 2.0 e autenticazione semplice con Amazon Cognito
Quando crei un broker con autenticazione OAuth 2.0, puoi specificare uno dei seguenti metodi di autenticazione:
-
OAuth Solo 2.0: per utilizzare questo metodo, non fornire nome utente e password durante la creazione del broker. La procedura precedente mostra come utilizzare solo il metodo di autenticazione OAuth 2.0.
-
Autenticazione OAuth 2.0 e semplice: per utilizzare questo metodo, fornisci un nome utente e una password durante la creazione del broker. Inoltre,
auth_backends.2 = internal
aggiungetelo alla configurazione del broker, come illustrato nella procedura seguente.
Nella procedura seguente, assicuratevi di sostituire i valori segnaposto, ad esempio <ConfigurationId>
e<Revision>
, con i valori effettivi.
-
Per utilizzare entrambi i metodi di autenticazione, create la configurazione del broker, come illustrato nell'esempio seguente.
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:*/*Questa configurazione utilizza alias di ambito
per mappare gli ambiti definiti in Amazon Cognito a ambiti compatibili con RabbitMQ. -
Crea un broker che utilizzi entrambi i metodi di autenticazione, come mostrato nell'esempio seguente.
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>
"}]' -
Verifica che lo stato del broker e la configurazione per l'impostazione del metodo di autenticazione abbiano avuto esito positivo, come descritto nei passaggi 5 e 6 della Configurazione dell'autenticazione OAuth 2.0 con Amazon Cognito procedura.