View a markdown version of this page

Beispiel: Autorisierung für das Standard-Gateway und das von der AgentCore CLI erstellte Ziel - Amazon Grundgestein AgentCore

Beispiel: Autorisierung für das Standard-Gateway und das von der AgentCore CLI erstellte Ziel

Wenn Sie die AgentCore CLI verwendet haben, um ein Gateway und ein Lambda-Ziel zu erstellen, konfiguriert die CLI die JWT-based eingehende Autorisierung und die IAM-based ausgehende Autorisierung automatisch für Sie.

Anmerkung

Wenn Sie Ihr Gateway mit aufrufenagentcore invoke, verarbeitet die CLI die Authentifizierung automatisch. Die folgenden Schritte sind nur erforderlich, wenn Sie das Gateway programmgesteuert aufrufen möchten (z. B. mit dem AWS SDK oder). curl

Für den programmatischen Zugriff autorisieren Sie sich wie folgt:

  • Eingehende Autorisierung mit JWT — Rufen Sie das Zugriffstoken von der Amazon Cognito Cognito-Autorisierung ab, die automatisch für Sie eingerichtet wurde, und fügen Sie es in den Autorisierungsheader ein. Sehen Sie sich das Beispiel unten an, um zu erfahren, wie Sie das Token erhalten.

  • Ausgehende Autorisierung mit IAM — Die AgentCore CLI konfiguriert die folgenden Berechtigungen für Sie, sodass Sie keine zusätzliche Einrichtung benötigen:

    • Ihre Gateway-Servicerolle ist berechtigt, alle Funktionen in Lambda aufzurufen (bereitgestellt durch die BedrockAgentCoreFullAccessverwaltete Richtlinie).

    • Die erstellte Lambda-Funktion ist mit Ihrer Gateway-Servicerolle konfiguriertPrincipal, die sie aufrufen kann.

Sie können das von der AgentCore CLI mit Hilfe von Amazon Cognito für Ihr Gateway erstellte Zugriffstoken abrufen, indem Sie die folgenden Informationen sammeln:

  • Token-Endpunkt — Suchen Sie nach der Discovery-URL in der Authorizer-Konfiguration für das Gateway. Wenn Sie die API verwenden, können Sie die Discovery-URL finden, indem Sie eine ListGatewaysAnfrage oder eine GetGatewayAnfrage an Ihr Gateway senden.

  • Client-ID — Informationen finden Sie im Amazon Cognito Cognito-Benutzerpool. Wenn Sie die API verwenden, können Sie eine ListUserPoolsAnfrage oder eine DescribeUserPoolAnfrage für den Benutzerpool senden, der Ihrem Gateway zugeordnet ist.

  • Geheimer Kunde — Suchen Sie in der Amazon Cognito Cognito-Benutzerpool-App nach Kundeninformationen. Wenn Sie die API verwenden, können Sie eine DescribeUserPoolClientAnfrage senden und dabei die Client-ID und die Benutzerpool-ID angeben, die Ihrem Gateway zugeordnet sind.

Erfassen Sie diese Werte zunächst mit einer der folgenden Methoden. Wählen Sie eine der folgenden Methoden aus:

Beispiel
Console
  1. Rufen Sie den Token-Endpunkt ab:

    1. Öffnen Sie die AgentCore Konsole unter https://console.aws.amazon.com/bedrock-agentcore/home#.

    2. Wählen Sie im linken Navigationsbereich Gateways aus.

    3. Wählen Sie im Abschnitt Gateways Ihr Gateway aus.

    4. Notieren Sie sich im Abschnitt Inbound Identity die folgenden Werte:

      • Zulässige Clients — Die Client-IDs, die auf das Gateway zugreifen können.

      • Discovery-URL — Das Format sollte seinhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Speichern Sie die folgenden Werte:

        • ${UserPoolId}— Auszug aus der Discovery-URL.

        • Token-Endpunkt — Wählen Sie den Discovery-URL-Link aus und suchen Sie den Wert im token_endpoint Feld.

  2. Rufen Sie die Client-ID und den geheimen Client-Schlüssel ab:

    1. Öffnen Sie die Amazon-Cognito-Konsole unter https://console.aws.amazon.com/cognito.

    2. Wählen Sie im linken Navigationsbereich Benutzerpools aus.

    3. Wählen Sie die Benutzerpool-ID aus, die Ihrem Gateway zugeordnet ist.

    4. Wählen Sie im linken Navigationsbereich App-Clients aus.

    5. Wählen Sie einen App-Client aus, dessen Client-ID mit den zulässigen Clients für Ihren Token-Endpunkt übereinstimmt. Speichern Sie den ID-Wert.

    6. Wählen Sie unter Client Secret die Option Client Secret anzeigen aus und speichern Sie diesen Wert.

AWS CLI
  1. Führen Sie den AgentCore get-gateway Befehl in einem Terminal aus und geben Sie Ihre Gateway-ID im --gateway-identifier Argument an, wie im folgenden Beispiel:

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. Notieren Sie sich in der Antwort das discoveryUrl aus dem authorizerConfiguration Feld:

    • Speichern Sie das ${UserPoolId} aus der URL. Das Format sollte seinhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.

    • Speichern Sie die allowedClients Werte. Dies sind die Client-IDs, die auf den Token-Endpunkt zugreifen können.

    • Navigieren Sie discoveryUrl in einem Browser zu und speichern Sie den token_endpoint Wert.

  3. Führen Sie den Amazon Cognito describe-user-pool-client Cognito-Befehl in einem Terminal aus und geben Sie die Benutzerpool-ID im --user-pool-id Argument und eine zulässige Client-ID im --client-id Feld an, wie im folgenden Beispiel:

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. Speichern Sie den ClientSecret Wert.

AWS Python SDK (Boto3)
  1. Führen Sie den folgenden Python-Code aus, um den Token-Endpunkt, die Client-ID und das Client-Geheimnis als Variablen zu speichern:

    import requests import boto3 # Initialize AWS clients agentcore_client = boto3.client("bedrock-agentcore-control") cognito_client = boto3.client("cognito-idp") # Replace with your actual gateway ID gateway_id = "my-gateway-id" # Get discovery URL and first allowed client auth_config = agentcore_client.get_gateway(gatewayIdentifier=gateway_id)["authorizerConfiguration"]["customJWTAuthorizer"] discovery_url, client_id = auth_config["discoveryUrl"], auth_config["allowedClients"][0] # Get token endpoint from discovery URL discovery_url_json = requests.get(discovery_url).json() token_endpoint, user_pool_id = discovery_url_json["token_endpoint"], discovery_url_json["issuer"].split("/")[-1] # Get client secret client_secret = cognito_client.describe_user_pool_client( UserPoolId=user_pool_id, ClientId=client_id )["UserPoolClient"]["ClientSecret"]

Verwenden Sie zweitens die gesammelten Werte, um vom Token-Endpunkt aus auf das Token zuzugreifen. Wählen Sie eine der folgenden Methoden aus:

Beispiel
curl
  1. Führen Sie den folgenden Befehl in einem Terminal aus und ersetzen Sie dabei die Werte für den Token-Endpunkt, die Client-ID und den geheimen Client-Schlüssel.

    curl --http1.1 -X POST ${TokenEndpoint} \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=${ClientId}&client_secret=${ClientSecret}"

    Das Token befindet sich im access_token Feld der Antwort, während das token_type Feld Folgendes angeben sollteBearer.

Python requests package
  1. Führen Sie den folgenden Python-Code aus, um Ihr Zugriffstoken zu erhalten. Der Code geht davon aus, dass Sie die client_secret Werte token_endpointclient_id, und aus dem vorherigen Schritt gespeichert haben:

    import requests import json def get_access_token(token_endpoint, client_id, client_secret): headers={ "Content-Type": "application/x-www-form-urlencoded" } payload={ "grant_type": "client_credentials", "client_id": client_id, "client_secret": client_secret } response = requests.post(token_endpoint, headers=headers, data=payload) return response.json() # Replace the argument values as necessary, if you didn't previously store them as these variables access_token_response = get_access_token( token_endpoint=token_endpoint, client_id=client_id, client_secret=client_secret ) access_token = access_token_response["access_token"]