Amazon MQ for RabbitMQ での OAuth 2.0 認証と認可の使用 - Amazon MQ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MQ for RabbitMQ での OAuth 2.0 認証と認可の使用

このチュートリアルでは、Amazon Cognito を OAuth 2.0 プロバイダーとして使用して、Amazon MQ for RabbitMQ ブローカーの OAuth 2.0 認証を設定する方法について説明します。 Amazon MQ RabbitMQ Amazon Cognito OAuth

注記

Amazon Cognito は、中国 (北京) および中国 (寧夏) では利用できません。

重要

このチュートリアルは Amazon Cognito に固有のものですが、他の ID プロバイダー (IdPsを使用できます。詳細については、OAuth 2.0 認証の例」を参照してください。

OAuth 2.0 認証を設定するための前提条件

このチュートリアルで必要な Amazon Cognito リソースを設定するには、RabbitMQ OAuth 2 プラグイン用の AWS CDK スタックである Amazon Cognito スタックをデプロイします。 Amazon Cognito RabbitMQ OAuth Amazon Cognito を手動で設定する場合は、Amazon MQ for RabbitMQ ブローカーで OAuth 2.0 を設定する前に、次の前提条件を満たしていることを確認してください。

Amazon Cognito をセットアップするための前提条件
Amazon MQ をセットアップするための前提条件
  • OAuth 2.0 のセットアップが成功したかどうかを確認する bash スクリプトを実行するための Docker のインストール。

  • AWS CLI version >= 2.28.23 ブローカーの作成時にユーザー名とパスワードの追加をオプションにします。

を使用して Amazon Cognito で OAuth 2.0 認証を設定する AWS CLI

次の手順は、Amazon Cognito を IdP として使用して Amazon MQ for RabbitMQ ブローカーの OAuth 2.0 認証を設定する方法を示しています。 Amazon Cognito IdP この手順では AWS CLI 、 を使用して必要なリソースを作成および設定します。

次の手順では、configurationID や Revision、<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca><2> などのプレースホルダー値を実際の値に置き換えてください。

  1. 次の例に示すように、create-configuration AWS CLI コマンドを使用して新しい設定を作成します。

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

    このコマンドは、次の例のようなレスポンスを返します。

    { "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. 次の例に示すように、OAuth 2.0 rabbitmq.confを認証および認可方法として使用する という設定ファイルを作成します。

    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:administrator

    この設定では、スコープエイリアスを使用して、Amazon Cognito で定義されたスコープを RabbitMQ 互換スコープにマッピングします。

  3. 次の例に示すように、update-configuration AWS CLI コマンドを使用して設定を更新します。このコマンドでは、この手順のステップ 1 のレスポンスで受け取った設定 ID を追加します。例えば、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)"

    このコマンドは、次の例のようなレスポンスを返します。

    { "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. この手順のステップ 2 で作成した OAuth 2.0 設定を使用してブローカーを作成します。これを行うには、次の例に示すように create-broker AWS CLI コマンドを使用します。このコマンドでは、ステップ 1 と 2 のレスポンスで取得した設定 ID とリビジョン番号をそれぞれ指定します。例えば、c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca2 です。

    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>}' \

    このコマンドは、次の例のようなレスポンスを返します。

    { "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. 次の例に示すように、describe-broker AWS CLI コマンドを使用してRUNNING、ブローカーのステータスが から CREATION_IN_PROGRESS に移行していることを確認します。このコマンドでは、前のステップの結果で取得したブローカー ID を指定します。例: b-2a1b5133-a10c-49d2-879b-8c176c34cf73

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

    このコマンドは、次の例のようなレスポンスを返します。次のレスポンスは、describe-brokerコマンドが返す完全な出力の省略バージョンです。このレスポンスは、ブローカーのステータスと、ブローカーの保護に使用される認証戦略を示します。この場合、config_managed認証戦略はブローカーが OAuth 2 認証方法を使用していることを示します。

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

    OAuth2 を使用して RabbitMQ マネジメントコンソールにログインするには、ブローカーエンドポイントを、対応する Amazon Cognito アプリケーションクライアントの有効なコールバック URL として追加する必要があります。詳細については、サンプルの Amazon Cognito CDK スタックのセットアップのステップ 5 を参照してください。

  6. 次のperf-test.shスクリプトを使用して、OAuth 2.0 の認証と認可を検証します。

    この bash スクリプトを使用して、Amazon MQ for RabbitMQ ブローカーへの接続をテストします。このスクリプトは Amazon Cognito からトークンを取得し、接続が正しく設定されているかどうかを確認します。正常に設定されると、ブローカーがメッセージを発行して使用します。

    ACCESS_REFUSED エラーが発生した場合は、ブローカーの CloudWatch ログを使用して設定のトラブルシューティングを行うことができます。ブローカーの CloudWatch ロググループのリンクは、Amazon MQ コンソールにあります。

    このスクリプトでは、次の値を指定する必要があります。

    • CLIENT_ID および CLIENT_SECRET: これらの値は、Amazon Cognito コンソールのアプリクライアントページで確認できます。

    • Cognito ドメイン: これは Amazon Cognito コンソールで確認できます。ブランディング で、ドメイン を選択します。ドメインページで、この値はリソースサーバーセクションにあります。

    • Amazon MQ ブローカーエンドポイント: この値は、Amazon MQ コンソールのブローカーの詳細ページの Connections にあります。

    #! /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

Amazon Cognito による OAuth 2.0 と簡易認証の設定

OAuth 2.0 認証を使用してブローカーを作成する場合、次のいずれかの認証方法を指定できます。

  • OAuth 2.0 のみ: この方法を使用するには、ブローカーの作成時にユーザー名とパスワードを指定しないでください。前の手順は、OAuth 2.0 認証方法のみを使用する方法を示しています。

  • OAuth 2.0 と簡易認証の両方: この方法を使用するには、ブローカーの作成時にユーザー名とパスワードを指定します。また、次の手順に示すように、ブローカー設定auth_backends.2 = internalに を追加します。

次の手順では、<ConfigurationId> や <Revision> などのプレースホルダー値を実際の値に置き換えてください。

  1. 両方の認証方法を使用するには、次の例に示すように、ブローカー設定を作成します。

    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:*/*

    この設定では、スコープエイリアスを使用して、Amazon Cognito で定義されたスコープを RabbitMQ 互換スコープにマッピングします。

  2. 次の例に示すように、両方の認証方法を使用するブローカーを作成します。

    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. Amazon Cognito による OAuth 2.0 認証の設定 手順のステップ 5 と 6 で説明されているように、ブローカーのステータスと認証方法の設定が成功したことを確認します。