Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan otentikasi OAuth 2.0 dan otorisasi untuk Amazon MQ untuk RabbitMQ
Tutorial ini menjelaskan cara mengonfigurasi otentikasi OAuth 2.0 untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan Amazon Cognito sebagai penyedia 2.0. OAuth
catatan
Amazon Cognito tidak tersedia di Tiongkok (Beijing) dan Tiongkok (Ningxia).
penting
Tutorial ini khusus untuk Amazon Cognito, tetapi Anda dapat menggunakan penyedia identitas lain ()IdPs. Untuk informasi selengkapnya, lihat Contoh Otentikasi OAuth 2.0
Di halaman ini
Prasyarat untuk mengonfigurasi otentikasi 2.0 OAuth
Anda dapat mengatur sumber daya Amazon Cognito yang diperlukan dalam tutorial ini dengan menerapkan tumpukan, AWS CDK tumpukan Amazon Cognito untuk plugin RabbitMQ
Prasyarat untuk mengatur Amazon Cognito
-
Siapkan titik akhir Amazon Cognito dengan membuat kumpulan pengguna. Untuk melakukan ini, lihat blog berjudul Cara menggunakan OAuth 2.0 di Amazon Cognito: Pelajari tentang hibah 2.0 yang OAuth berbeda
. -
Buat server sumber daya yang dipanggil
rabbitmq
di kumpulan pengguna dengan cakupan berikut yang ditentukan:read:all
,,write:all
configure:all
, dantag:administrator
. Cakupan ini akan dikaitkan dengan izin RabbitMQ.Untuk informasi tentang membuat server sumber daya, lihat Mendefinisikan server sumber daya untuk kumpulan pengguna (AWS Management Console) di Panduan Pengembang Amazon Cognito.
-
Buat klien aplikasi berikut:
-
Klien aplikasi untuk jenis kumpulan pengguna
Machine-to-Machine application
. Ini adalah klien rahasia dengan rahasia klien yang akan digunakan untuk klien RabbitMQ AMQP. Untuk informasi selengkapnya tentang klien aplikasi dan membuatnya, lihat Jenis klien aplikasi dan Membuat klien aplikasi. -
Klien aplikasi untuk jenis kumpulan pengguna
Single-page application
. Ini adalah klien publik yang akan digunakan untuk masuk pengguna ke konsol manajemen RabbitMQ. Anda harus memperbarui klien aplikasi ini untuk menyertakan titik akhir Amazon MQ untuk broker RabbitMQ yang akan Anda buat dalam prosedur berikut sebagai URL panggilan balik yang diizinkan. Untuk informasi selengkapnya, lihat Menyiapkan login terkelola dengan konsol Amazon Cognito.
-
Prasyarat untuk mengatur Amazon MQ
-
Instalasi Docker
yang berfungsi untuk menjalankan skrip bash yang memverifikasi apakah pengaturan OAuth 2.0 berhasil atau tidak. -
AWS CLI versi >=
2.28.23
untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.
Mengonfigurasi otentikasi OAuth 2.0 dengan Amazon Cognito menggunakan AWS CLI
Prosedur berikut menunjukkan cara mengatur otentikasi OAuth 2.0 untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan Amazon Cognito sebagai IDP. Prosedur ini digunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan.
Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>
dan<2>
, dengan nilai sebenarnya.
-
Buat konfigurasi baru menggunakan AWS CLI perintah create-configuration seperti yang ditunjukkan pada contoh berikut.
aws mq create-configuration \ --name "
rabbitmq-oauth2-config
" \ --engine-type "RABBITMQ" \ --engine-version "3.13"Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "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" } -
Buat file konfigurasi yang dipanggil
rabbitmq.conf
untuk menggunakan OAuth 2.0 sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut.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:administratorKonfigurasi ini menggunakan alias cakupan
untuk memetakan cakupan yang ditentukan di Amazon Cognito ke cakupan yang kompatibel dengan RabbitMQ. -
Perbarui konfigurasi menggunakan AWS CLI perintah update-configuration seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya,
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)"Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "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": [] } -
Buat broker dengan konfigurasi OAuth 2.0 yang Anda buat di Langkah 2 prosedur ini. Untuk melakukan ini, gunakan AWS CLI perintah create-broker seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya,
c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca
dan2
.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>
}' \Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "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" } -
Verifikasi bahwa status broker bertransisi dari
CREATION_IN_PROGRESS
keRUNNING
, menggunakan AWS CLI perintah deskripsi-broker seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh dalam hasil langkah sebelumnya Misalnya,b-2a1b5133-a10c-49d2-879b-8c176c34cf73
.aws mq describe-broker \ --broker-id "
<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>
"Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan
describe-broker
perintah. Tanggapan ini menunjukkan status broker dan strategi otentikasi yang digunakan untuk mengamankan broker. Dalam hal ini, strategiconfig_managed
otentikasi menunjukkan bahwa broker menggunakan OAuth 2 metode otentikasi.{ "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
Untuk masuk ke konsol manajemen RabbitMQ menggunakan OAuth2, titik akhir broker perlu ditambahkan sebagai URL panggilan balik yang valid di klien aplikasi Amazon Cognito yang sesuai. Untuk informasi selengkapnya, lihat Langkah 5 dalam pengaturan sampel tumpukan CDK Amazon Cognito
kami. -
Verifikasi otentikasi dan otorisasi OAuth 2.0 dengan skrip berikut
perf-test.sh
.Gunakan skrip bash ini untuk menguji konektivitas ke Amazon MQ Anda untuk broker RabbitMQ. Skrip ini memperoleh token dari Amazon Cognito dan memverifikasi apakah koneksi telah dikonfigurasi dengan benar. Jika berhasil dikonfigurasi, Anda akan melihat broker Anda mempublikasikan dan menggunakan pesan.
Jika Anda menerima
ACCESS_REFUSED
kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log untuk broker Anda di konsol Amazon MQ.Dalam skrip ini, Anda harus memberikan nilai-nilai berikut:
-
CLIENT_ID
danCLIENT_SECRET
: Anda dapat menemukan nilai-nilai ini di halaman Klien aplikasi di konsol Amazon Cognito. -
Domain Cognito: Anda dapat menemukannya di konsol Amazon Cognito. Di bawah Branding, pilih Domain. Pada halaman Domain, Anda dapat menemukan nilai ini di bawah bagian Server sumber daya.
-
Titik akhir broker Amazon MQ: Anda dapat menemukan nilai ini di bawah Koneksi di halaman detail broker konsol 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 -
Mengkonfigurasi OAuth 2.0 dan otentikasi sederhana dengan Amazon Cognito
Saat Anda membuat broker dengan otentikasi OAuth 2.0, Anda dapat menentukan salah satu metode otentikasi berikut:
-
OAuth 2.0 saja: Untuk menggunakan metode ini, jangan berikan nama pengguna dan kata sandi saat membuat broker. Prosedur sebelumnya menunjukkan cara menggunakan hanya metode otentikasi OAuth 2.0.
-
Baik OAuth 2.0 dan otentikasi sederhana: Untuk menggunakan metode ini, berikan nama pengguna dan kata sandi saat membuat broker. Juga, tambahkan
auth_backends.2 = internal
ke konfigurasi broker Anda, seperti yang ditunjukkan dalam prosedur berikut.
Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti <ConfigurationId>
dan<Revision>
, dengan nilai aktualnya.
-
Untuk menggunakan kedua metode otentikasi, buat konfigurasi broker Anda, seperti yang ditunjukkan pada contoh berikut.
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:*/*Konfigurasi ini menggunakan alias cakupan
untuk memetakan cakupan yang ditentukan di Amazon Cognito ke cakupan yang kompatibel dengan RabbitMQ. -
Buat broker yang menggunakan kedua metode otentikasi, seperti yang ditunjukkan pada contoh berikut.
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>
"}]' -
Verifikasi status broker dan konfigurasi untuk menyiapkan metode otentikasi berhasil seperti yang dijelaskan dalam Langkah 5 dan 6 dari Mengonfigurasi otentikasi OAuth 2.0 dengan Amazon Cognito prosedur.