

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden der OAuth 2.0-Authentifizierung und -Autorisierung für Amazon MQ für RabbitMQ
<a name="oauth-tutorial"></a>

In diesem Tutorial wird beschrieben, wie Sie die [OAuth 2.0-Authentifizierung](oauth-for-amq-for-rabbitmq.md) für Ihre Amazon MQ for RabbitMQ-Broker mit Amazon Cognito als 2.0-Anbieter konfigurieren. OAuth 

**Anmerkung**  
Amazon Cognito ist in China (Peking) und China (Ningxia) nicht verfügbar.

**Wichtig**  
Dieses Tutorial ist spezifisch für Amazon Cognito, Sie können jedoch auch andere Identitätsanbieter (IdPs) verwenden. Weitere Informationen finden Sie unter [OAuth 2.0-Authentifizierungsbeispiele](https://www.rabbitmq.com/docs/oauth2-examples).

**Topics**
+ [Voraussetzungen für die Konfiguration der OAuth 2.0-Authentifizierung](#oauth-tutorial-prerequisites)
+ [Konfiguration der OAuth 2.0-Authentifizierung mit Amazon Cognito mithilfe AWS CLI](#oauth-tutorial-config-cognito-using-cli)
+ [Konfiguration OAuth 2.0 und einfache Authentifizierung mit Amazon Cognito](#oauth-tutorial-config-both-auth-methods-using-cli)

## Voraussetzungen für die Konfiguration der OAuth 2.0-Authentifizierung
<a name="oauth-tutorial-prerequisites"></a>

Sie können die in diesem Tutorial benötigten Amazon Cognito-Ressourcen festlegen, indem Sie das AWS CDK Stack-Plug-In [Amazon Cognito Stack für OAuth RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/tree/main/rabbitmq-samples/rabbitmq-oauth2-cognito-sample) 2 bereitstellen. Wenn Sie Amazon Cognito manuell einrichten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie OAuth 2.0 auf Ihrem Amazon MQ für RabbitMQ-Broker konfigurieren:

**Voraussetzungen für die Einrichtung von Amazon Cognito**
+ Richten Sie einen Amazon Cognito Cognito-Endpunkt ein, indem Sie einen Benutzerpool erstellen. Lesen Sie dazu den Blog mit dem Titel [How to use OAuth 2.0 in Amazon Cognito: Learn about the different OAuth 2.0-Stipendien](https://aws.amazon.com/blogs/security/how-to-use-oauth-2-0-in-amazon-cognito-learn-about-the-different-oauth-2-0-grants/).
+ Erstellen Sie einen Ressourcenserver, der `rabbitmq` im Benutzerpool aufgerufen wird und für den die folgenden Bereiche definiert sind:`read:all`, `write:all``configure:all`, und. `tag:administrator` Diese Bereiche werden mit RabbitMQ-Berechtigungen verknüpft.

  Informationen zum Erstellen eines Ressourcenservers finden Sie unter [Definieren eines Ressourcenservers für Ihren Benutzerpool (AWS-Managementkonsole)](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html#cognito-user-pools-define-resource-servers-console) im *Amazon Cognito Developer Guide*.
+ Erstellen Sie die folgenden Anwendungsclients:
  + Anwendungsclient für den Benutzerpool des Typs`Machine-to-Machine application`. Dies ist ein vertraulicher Client mit einem geheimen Client-Schlüssel, der für RabbitMQ AMQP-Clients verwendet wird. [Weitere Informationen zu Anwendungsclients und deren Erstellung finden Sie unter [App-Clienttypen und Einen App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html#user-pool-settings-client-app-client-types) erstellen.](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html#cognito-user-pools-app-idp-settings-console-create)
  + Anwendungsclient für den Benutzerpool des Typs`Single-page application`. Dies ist ein öffentlicher Client, der verwendet wird, um Benutzer an der RabbitMQ-Managementkonsole anzumelden. Sie müssen diesen Anwendungsclient so aktualisieren, dass er den Endpunkt des Amazon MQ for RabbitMQ-Brokers enthält, den Sie im folgenden Verfahren als zulässige Callback-URL erstellen. Weitere Informationen finden Sie unter [Verwaltete Anmeldung mit der Amazon Cognito Cognito-Konsole einrichten](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-managed-login.html#set-up-managed-login).

**Voraussetzung für die Einrichtung von Amazon MQ**
+ Eine funktionierende [Docker-Installation](https://docs.docker.com/engine/install/) zur Ausführung eines Bash-Skripts, das überprüft, ob das OAuth 2.0-Setup erfolgreich ist oder nicht.
+ AWS CLI Version >=`2.28.23`, um das Hinzufügen eines Benutzernamens und eines Passworts bei der Broker-Erstellung optional zu machen.

## Konfiguration der OAuth 2.0-Authentifizierung mit Amazon Cognito mithilfe AWS CLI
<a name="oauth-tutorial-config-cognito-using-cli"></a>

Das folgende Verfahren zeigt, wie Sie die OAuth 2.0-Authentifizierung für Ihre Amazon MQ for RabbitMQ-Broker einrichten, die Amazon Cognito als IdP verwenden. Dieses Verfahren dient dazu, die erforderlichen Ressourcen AWS CLI zu erstellen und zu konfigurieren.

Stellen Sie im folgenden Verfahren sicher, dass Sie die Platzhalterwerte, wie ConfigurationID und Revision, durch ihre *<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>* tatsächlichen *<2>* Werte ersetzen.

1. Erstellen Sie mit dem AWS CLI Befehl [create-configuration eine neue Konfiguration](https://docs.aws.amazon.com/cli/latest/reference/mq/create-configuration.html), wie im folgenden Beispiel gezeigt.

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

   Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

   ```
   {
       "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"
   }
   ```

1. Erstellen Sie eine Konfigurationsdatei, die aufgerufen wird**rabbitmq.conf**, um OAuth 2.0 als Authentifizierungs- und Autorisierungsmethode zu verwenden, wie im folgenden Beispiel gezeigt.

   ```
   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
   ```

   Diese Konfiguration verwendet [Bereichsaliase](https://www.rabbitmq.com/docs/oauth2#scope-translation), um die in Amazon Cognito definierten Bereiche RabbitMQ-kompatiblen Bereichen zuzuordnen.

1. Aktualisieren Sie die Konfiguration mithilfe des Befehls [update-configuration, wie im folgenden Beispiel gezeigt](https://docs.aws.amazon.com/cli/latest/reference/mq/update-configuration.html) AWS CLI . Fügen Sie in diesem Befehl die Konfigurations-ID hinzu, die Sie als Antwort auf Schritt 1 dieses Verfahrens erhalten haben. Beispiel, **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)"
   ```

   Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

   ```
   {
       "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": []
   }
   ```

1. Erstellen Sie einen Broker mit der OAuth 2.0-Konfiguration, die Sie in Schritt 2 dieses Verfahrens erstellt haben. Verwenden Sie dazu den AWS CLI Befehl [create-broker](https://docs.aws.amazon.com/cli/latest/reference/mq/create-broker.html), wie im folgenden Beispiel gezeigt. Geben Sie in diesem Befehl die Konfigurations-ID und die Revisionsnummer an, die Sie in den Antworten von Schritt 1 bzw. 2 erhalten haben. Beispiel: **c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca** und **2**.

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

   Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

   ```
   {
       "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"
   }
   ```

1. Vergewissern Sie sich, dass der Status des Brokers von `CREATION_IN_PROGRESS` zu wechselt`RUNNING`, indem Sie den AWS CLI Befehl [describe-broker](https://docs.aws.amazon.com/cli/latest/reference/mq/describe-broker.html) verwenden, wie im folgenden Beispiel gezeigt. Geben Sie in diesem Befehl die Broker-ID ein, die Sie im Ergebnis des vorherigen Schritts erhalten haben, z. B. **b-2a1b5133-a10c-49d2-879b-8c176c34cf73**

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

   Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt. Die folgende Antwort ist eine abgekürzte Version der vollständigen Ausgabe, die der `describe-broker` Befehl zurückgibt. Diese Antwort zeigt den Brokerstatus und die Authentifizierungsstrategie, die zur Sicherung des Brokers verwendet wurden. In diesem Fall weist die `config_managed` Authentifizierungsstrategie darauf hin, dass der Broker OAuth zwei Authentifizierungsmethoden verwendet.

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

    Um sich mit der RabbitMQ Management Console anzumelden OAuth2, muss der Broker-Endpunkt als gültige Callback-URL im entsprechenden Amazon Cognito-App-Client hinzugefügt werden. Weitere Informationen finden Sie in Schritt 5 bei der Einrichtung unseres [Amazon Cognito CDK-Beispielstapels](https://github.com/aws-samples/amazon-mq-samples/tree/main/rabbitmq-samples/rabbitmq-oauth2-cognito-sample#step-5-update-callback-urls-if-using-placeholder-urls). 

1. Überprüfen Sie die OAuth 2.0-Authentifizierung und Autorisierung mit dem folgenden `perf-test.sh` Skript.

   Verwenden Sie dieses Bash-Skript, um die Konnektivität zu Ihrem Amazon MQ for RabbitMQ Broker zu testen. Dieses Skript ruft ein Token von Amazon Cognito ab und überprüft, ob die Verbindung ordnungsgemäß konfiguriert wurde. Wenn es erfolgreich konfiguriert wurde, werden Sie sehen, wie Ihr Broker Nachrichten veröffentlicht und verarbeitet.

   Wenn Sie eine `ACCESS_REFUSED` Fehlermeldung erhalten, können Sie mithilfe der CloudWatch Protokolle Ihres Brokers Fehler in Ihren Konfigurationseinstellungen beheben. Sie finden den Link für die CloudWatch Protokollgruppe für Ihren Broker in der Amazon MQ MQ-Konsole.

   In diesem Skript müssen Sie die folgenden Werte angeben:
   + `CLIENT_ID`und`CLIENT_SECRET`: Sie finden diese Werte auf der **App-Client-Seite** der Amazon Cognito Cognito-Konsole.
   + Cognito-Domain: Sie finden diese Domain auf der Amazon Cognito Cognito-Konsole. **Wählen Sie unter **Branding** die Option Domain aus.** Auf der **Domain-Seite** finden Sie diesen Wert im Abschnitt **Resource Servers**.
   + Amazon MQ-Broker-Endpunkt: Sie finden diesen Wert unter **Verbindungen** auf der Broker-Detailseite der Amazon MQ MQ-Konsole.

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

## Konfiguration OAuth 2.0 und einfache Authentifizierung mit Amazon Cognito
<a name="oauth-tutorial-config-both-auth-methods-using-cli"></a>

Wenn Sie einen Broker mit OAuth 2.0-Authentifizierung erstellen, können Sie eine der folgenden Authentifizierungsmethoden angeben:
+ **OAuth Nur 2.0**: Um diese Methode zu verwenden, geben Sie bei der Erstellung des Brokers keinen Benutzernamen und kein Passwort an. Das [vorherige Verfahren](#oauth-tutorial-config-cognito-using-cli) zeigt, wie nur die OAuth 2.0-Authentifizierungsmethode verwendet wird.
+ **Sowohl OAuth 2.0 als auch einfache Authentifizierung**: Um diese Methode zu verwenden, geben Sie bei der Erstellung des Brokers einen Benutzernamen und ein Passwort ein. Fügen Sie `auth_backends.2 = internal` außerdem Ihre Broker-Konfiguration hinzu, wie im folgenden Verfahren gezeigt.

Stellen Sie im folgenden Verfahren sicher, dass Sie die Platzhalterwerte, wie z. B. *<ConfigurationId>* und*<Revision>*, durch ihre tatsächlichen Werte ersetzen.

1. Um beide Authentifizierungsmethoden zu verwenden, erstellen Sie Ihre Broker-Konfiguration, wie im folgenden Beispiel gezeigt.

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

   Diese Konfiguration verwendet [Bereichsaliase](https://www.rabbitmq.com/docs/oauth2#scope-translation), um die in Amazon Cognito definierten Bereiche RabbitMQ-kompatiblen Bereichen zuzuordnen.

1. Erstellen Sie einen Broker, der beide Authentifizierungsmethoden verwendet, wie im folgenden Beispiel gezeigt.

   ```
   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>"}]'
   ```

1. Stellen Sie sicher, dass der Brokerstatus und die Konfiguration für die Einrichtung der Authentifizierungsmethode erfolgreich waren, wie in den Schritten 5 und 6 des [Konfiguration der OAuth 2.0-Authentifizierung mit Amazon Cognito](#oauth-tutorial-config-cognito-using-cli) Verfahrens beschrieben.