

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan otentikasi HTTP dan otorisasi untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-http-tutorial"></a>

Tutorial ini menjelaskan cara mengkonfigurasi otentikasi HTTP dan otorisasi untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan server HTTP eksternal.

**catatan**  
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi dan otorisasi HTTP](#rabbitmq-http-tutorial-prerequisites)
+ [Mengkonfigurasi otentikasi HTTP di RabbitMQ menggunakan CLI AWS](#rabbitmq-http-tutorial-configure-cli)

## Prasyarat untuk mengonfigurasi otentikasi dan otorisasi HTTP
<a name="rabbitmq-http-tutorial-prerequisites"></a>

Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi otentikasi HTTP RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-http-sample/).

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk server otentikasi HTTP, sertifikat, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi otentikasi HTTP di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-http-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi otentikasi HTTP di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-http-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder dengan nilai aktualnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-http-config" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2"
   ```

   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-http-config on RabbitMQ 4.2",
           "Revision": 1
       },
       "Name": "rabbitmq-http-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk menggunakan HTTP sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${...}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   auth_backends.1 = cache
   auth_backends.2 = http
   auth_cache.cached_backend = http
   
   # HTTP authentication settings
   # For more information, see https://github.com/rabbitmq/rabbitmq-auth-backend-http
   
   # FIXME: Replace the ${...} placeholders with actual values
   # from your deployed prerequisite CDK stack outputs.
   auth_http.http_method = post
   auth_http.user_path = ${HttpServerUserPath}
   auth_http.vhost_path = ${HttpServerVhostPath}
   auth_http.resource_path = ${HttpServerResourcePath}
   auth_http.topic_path = ${HttpServerTopicPath}
   
   # TLS/HTTPS configuration
   auth_http.ssl_options.verify = verify_peer
   auth_http.ssl_options.sni = test.amazonaws.com
   
   # AWS integration for secure credential retrieval
   # For more information, see https://github.com/amazon-mq/rabbitmq-aws
   
   # Replace the ${...} placeholders with actual ARN values
   # from your deployed prerequisite CDK stack outputs.
   aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn}
   aws.arns.auth_http.ssl_options.cacertfile = ${CaCertArn}
   ```

1. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI. Gunakan ID konfigurasi dari Langkah 3.

   ```
   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-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-http-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi HTTP. Gunakan ID konfigurasi dan nomor revisi dari langkah sebelumnya.

   ```
   aws mq create-broker \
     --broker-name "rabbitmq-http-test-1" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2" \
     --host-instance-type "mq.m7g.large" \
     --deployment-mode "SINGLE_INSTANCE" \
     --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-http-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI.

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

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan metode otentikasi HTTP.

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

1. Validasi akses RabbitMQ menggunakan salah satu pengguna pengujian yang dibuat oleh tumpukan CDK prasyarat

   ```
   # FIXME: Replace ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs
   CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \
     --secret-id ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} \
     --query 'SecretString' --output text)
   
   # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by
   # calling describe-broker for the broker created above
   # Call management API /api/overview (should succeed)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     https://${BrokerConsoleURL}/api/overview
   
   # Try to create a vhost (should fail - console user only has management permissions)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     -X PUT https://${BrokerConsoleURL}/api/vhosts/test-vhost \
     -H "Content-Type: application/json" \
     -d '{}'
   ```