View a markdown version of this page

Amazon Cognito - Batuan Dasar Amazon AgentCore

Amazon Cognito

Amazon Cognito dapat dikonfigurasi sebagai penyedia identitas untuk mengakses AgentCore Gateway dan Runtime, atau penyedia kredensi AgentCore Identitas untuk akses sumber daya keluar. Ini memungkinkan agen Anda untuk mengautentikasi dan mengotorisasi pengguna agen dengan Cognito sebagai penyedia identitas dan server otorisasi, atau agen Anda untuk mendapatkan kredensyal untuk mengakses sumber daya yang disahkan oleh Cognito.

Ke dalam

Untuk menambahkan Cognito sebagai penyedia identitas dan server otorisasi untuk mengakses AgentCore Gateway dan Runtime, Anda harus:

  • Konfigurasikan URL penemuan dari direktori IDP Anda. Ini membantu AgentCore Identity mendapatkan metadata yang terkait dengan server otorisasi OAuth dan kunci verifikasi token Anda.

  • Masukkan valid clientId atau aud klaim untuk token. Ini membantu memvalidasi token yang berasal dari IDP Anda dan memungkinkan akses untuk token yang berisi klaim yang diharapkan.

Gunakan prosedur berikut untuk membuat kumpulan pengguna Cognito sebagai penyedia identitas masuk untuk otentikasi pengguna dengan Runtime. AgentCore Langkah-langkah berikut akan membuat kumpulan pengguna Cognito, klien kumpulan pengguna, menambahkan pengguna, dan menghasilkan token pembawa untuk pengguna. Token berlaku selama 60 menit secara default.

Untuk membuat kumpulan pengguna Cognito sebagai penyedia identitas masuk untuk otentikasi Runtime

  1. Buat file bernama setup_cognito.sh dengan konten berikut:

    catatan

    Skrip berikut hanya dimaksudkan sebagai contoh. Anda harus menyesuaikan pengaturan kumpulan pengguna dan kredensyal pengguna sesuai kebutuhan untuk aplikasi Anda. Jangan gunakan skrip ini secara langsung di lingkungan produksi.

    #!/bin/bash # Create User Pool and capture Pool ID directly export POOL_ID=$(aws cognito-idp create-user-pool \ --pool-name "MyUserPool" \ --policies '{"PasswordPolicy":{"MinimumLength":8}}' \ --region us-east-1 | jq -r '.UserPool.Id') # Create App Client and capture Client ID directly export CLIENT_ID=$(aws cognito-idp create-user-pool-client \ --user-pool-id $POOL_ID \ --client-name "MyClient" \ --no-generate-secret \ --explicit-auth-flows "ALLOW_USER_PASSWORD_AUTH" "ALLOW_REFRESH_TOKEN_AUTH" \ --region us-east-1 | jq -r '.UserPoolClient.ClientId') # Create User aws cognito-idp admin-create-user \ --user-pool-id $POOL_ID \ --username "testuser" \ --temporary-password "${temp-password}" \ --region us-east-1 \ --message-action SUPPRESS > /dev/null # Set Permanent Password aws cognito-idp admin-set-user-password \ --user-pool-id $POOL_ID \ --username "testuser" \ --password "${permanent-user-password}" \ --region us-east-1 \ --permanent > /dev/null # Authenticate User and capture Access Token export BEARER_TOKEN=$(aws cognito-idp initiate-auth \ --client-id "$CLIENT_ID" \ --auth-flow USER_PASSWORD_AUTH \ --auth-parameters USERNAME='testuser',PASSWORD='${permanent-user-password}' \ --region us-east-1 | jq -r '.AuthenticationResult.AccessToken') # Output the required values echo "Pool id: $POOL_ID" echo "Discovery URL: https://cognito-idp.us-east-1.amazonaws.com/$POOL_ID/.well-known/openid-configuration" echo "Client ID: $CLIENT_ID" echo "Bearer Token: $BEARER_TOKEN"
  2. Jalankan skrip untuk membuat sumber daya Cognito:

    source setup_cognito.sh
  3. Catat nilai output, yang akan terlihat mirip dengan:

    Pool id: us-east-1_poolid Discovery URL: https://cognito-idp.us-east-1.amazonaws.com/us-east-1_userpoolid/.well-known/openid-configuration Client ID: clientid Bearer Token: bearertoken

    Anda akan membutuhkan nilai-nilai ini di langkah selanjutnya.

Gunakan prosedur berikut untuk membuat kumpulan pengguna Cognito sebagai penyedia identitas masuk untuk otentikasi mesin-ke-mesin dengan Gateway. AgentCore Langkah-langkah berikut akan membuat kumpulan pengguna, server sumber daya, kredensyal klien, dan konfigurasi URL penemuan. Pengaturan ini memungkinkan aliran otentikasi M2M untuk akses Gateway.

Untuk membuat kumpulan pengguna Cognito sebagai penyedia identitas masuk untuk otentikasi Gateway

  1. Buat kumpulan pengguna:

    aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool"
  2. Rekam ID kumpulan pengguna dari respons atau ambil menggunakan:

    aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60
  3. Buat server sumber daya untuk kumpulan pengguna:

    aws cognito-idp create-resource-server \ --region us-west-2 \ --user-pool-id <UserPoolId> \ --identifier "gateway-resource-server" \ --name "GatewayResourceServer" \ --scopes '[{"ScopeName":"read","ScopeDescription":"Read access"}, {"ScopeName":"write","ScopeDescription":"Write access"}]'
  4. Buat klien untuk kumpulan pengguna:

    aws cognito-idp create-user-pool-client \ --region us-west-2 \ --user-pool-id <UserPoolId> \ --client-name "gateway-client" \ --generate-secret \ --allowed-o-auth-flows client_credentials \ --allowed-o-auth-scopes "gateway-resource-server/read" "gateway-resource-server/write" \ --allowed-o-auth-flows-user-pool-client \ --supported-identity-providers "COGNITO"

    Rekam ID klien dan rahasia klien dari respons. Anda memerlukan nilai-nilai ini untuk mengonfigurasi penyedia Cognito di AgentCore Identity.

  5. Jika diperlukan, buat domain untuk kumpulan pengguna Anda:

    aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2
    catatan

    Hapus garis bawah apa pun dari UserPoolId saat membuat domain. Misalnya, jika ID kumpulan pengguna Anda adalah “US-West-2_gmsgkkgr9", gunakan “US-West-2gmsgkkgr9" sebagai domain.

  6. Buat URL penemuan untuk kumpulan pengguna Cognito Anda:

    https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration
  7. Konfigurasikan Gateway Inbound Auth dengan nilai-nilai berikut:

    1. URL Discovery: URL yang dibangun pada langkah sebelumnya

    2. Klien yang diizinkan: ID klien diperoleh saat membuat klien kumpulan pengguna

Ke luar

catatan

AgentCore Identitas mengeluarkan URL callback OAuth2 unik untuk setiap penyedia kredensi yang Anda buat. URL panggilan balik unik memungkinkan pengikatan sesi, yang melindungi pertukaran kode otorisasi OAuth2 terhadap pemutaran ulang dan CSRF-style serangan lintas penyedia dengan memastikan respons otorisasi hanya dapat ditukarkan terhadap penyedia kredensi tertentu yang memulainya. Karena URL unik per penyedia, Anda tidak akan mengetahuinya sampai setelah Anda meneleponCreateOauth2CredentialProvider. Buat klien aplikasi kumpulan pengguna Cognito Anda terlebih dahulu, lalu kembali ke konsol Amazon Cognito untuk mendaftarkan URL panggilan balik AgentCore setelah Identity mengeluarkannya.

Langkah 1: Buat klien aplikasi kumpulan pengguna Cognito

Gunakan prosedur berikut untuk menyiapkan klien aplikasi kumpulan pengguna Cognito untuk federasi OAuth2 keluar. Anda akan mendaftarkan URI pengalihan di Langkah 3, setelah AgentCore Identity mengeluarkan URL callback unik.

Untuk mengonfigurasi klien aplikasi kumpulan pengguna Cognito

  1. Di konsol Amazon Cognito, buka atau buat kumpulan pengguna yang ingin Anda gunakan sebagai penyedia sumber daya keluar.

  2. Konfigurasikan domain kumpulan pengguna sehingga UI yang dihosting dapat mengeluarkan kode otorisasi.

  3. Buat klien aplikasi untuk kumpulan pengguna, buat rahasia klien, dan aktifkan alur OAuth2 pemberian kode Otorisasi.

  4. Pilih cakupan OAuth2 yang dibutuhkan aplikasi Anda.

  5. Biarkan kolom URL callback yang Diizinkan kosong untuk saat ini - Anda akan menambahkan URL panggilan balik unik di Langkah 3.

  6. Catat ID Klien dan Rahasia Klien. Anda memerlukan nilai-nilai ini untuk mengonfigurasi penyedia Cognito di AgentCore Identity.

  7. Perhatikan awalan domain dan ID kumpulan pengguna kumpulan pengguna Anda. Anda akan menggunakan ini untuk membangun titik akhir otorisasi, token, dan penerbit di Langkah 2.

Untuk detail selengkapnya, lihat Mengonfigurasi klien aplikasi di Panduan Pengembang Amazon Cognito.

Langkah 2: Buat penyedia kredensi AgentCore Identitas

Untuk mengonfigurasi kumpulan pengguna Cognito sebagai penyedia sumber daya keluar, gunakan konfigurasi berikut:

{ "name": "Cognito", "credentialProviderVendor": "CognitoOauth2", "oauth2ProviderConfigInput" : { "includedOauth2ProviderConfig": { "clientId": "your-client-id", "clientSecret": "your-client-secret", "authorizationEndpoint": "https://{your-cognito-domain}.auth.us-east-1.amazoncognito.com/oauth2/authorize", "tokenEndpoint": "https://{your-cognito-domain}.auth.us-east-1.amazoncognito.com/oauth2/token", "issuer": "https://cognito-idp.us-east-1.amazonaws.com/{your-user-pool-id}" } } }

CreateOauth2CredentialProviderResponsnya mencakup callbackUrl bidang. URL ini unik untuk penyedia kredensi ini dan terlihat seperti:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Simpan nilai ini untuk langkah selanjutnya.

Langkah 3: Daftarkan URL panggilan balik unik dengan Cognito

Kembali ke konsol Amazon Cognito dan tambahkan URL callback unik ke callback yang diizinkan klien aplikasi Anda.

  1. Di konsol Amazon Cognito, buka klien aplikasi kumpulan pengguna yang Anda buat di Langkah 1.

  2. Dalam konfigurasi UI yang di-host klien aplikasi, tambahkan callbackUrl nilai yang dikembalikan ke URL callback yang Diizinkan. CreateOauth2CredentialProvider

  3. Simpan perubahan Anda.