

# Utiliser une AgentCore passerelle avec une politique dans AgentCore
<a name="use-gateway-with-policy"></a>

Suivez le guide d'autorisation et d'authentification de la passerelle pour obtenir les informations d'identification nécessaires à l'accès à la passerelle.

**Outils MCP uniquement**  
L'évaluation des politiques s'applique uniquement aux outils MCP. Quel que soit le mode d'évaluation des politiques, la passerelle autorise toujours les invites MCP (`prompts/list`,`prompts/get`) et les ressources (`resources/list`,`resources/read`,`resources/templates/list`).

**Topics**
+ [AgentCore Répertorier les outils de passerelle contenant une politique AgentCore](#list-gateway-tools)
+ [Outils de passerelle d'appels avec politique](#call-gateway-tools)
+ [Réponses politiques](#policy-responses)

## AgentCore Répertorier les outils de passerelle contenant une politique AgentCore
<a name="list-gateway-tools"></a>

La liste des outils est traitée comme une **méta-action**. Lorsqu'un principal répertorie les outils disponibles, le moteur de politiques n'évalue pas le contexte complet d'un appel d'outil spécifique (par exemple, les paramètres d'entrée).

Un directeur n'est autorisé à voir dans la liste que les outils qu'il serait autorisé à appeler conformément à la politique. Étant donné que le contexte complet d'un appel d'outil n'est pas disponible lors de la mise en vente, cela signifie qu'un principal est autorisé à répertorier un outil **s'il existe un ensemble de circonstances dans lesquelles un appel à cet outil serait autorisé**.

Par conséquent, un outil figurant dans la liste ne garantit pas qu'un appel ultérieur à cet outil sera autorisé. La décision d'autorisation pour un véritable appel d'outil est évaluée séparément en utilisant le contexte complet de la demande, y compris les paramètres d'entrée.

Sélectionnez l'une des méthodes suivantes :

**Example**  

1. 

   ```
   curl -X POST \
     https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
       "jsonrpc": "2.0",
       "id": "list-tools-request",
       "method": "tools/list"
     }'
   ```

1. 

   ```
   import requests
   import json
   
   def list_tools(gateway_url, access_token):
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}"
       }
   
       payload = {
           "jsonrpc": "2.0",
           "id": "list-tools-request",
           "method": "tools/list"
       }
   
       response = requests.post(gateway_url, headers=headers, json=payload)
       return response.json()
   
   # Example usage
   gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
   access_token = "YOUR_ACCESS_TOKEN"
   tools = list_tools(gateway_url, access_token)
   print(json.dumps(tools, indent=2))
   ```

   La réponse renvoie uniquement les outils que vos politiques vous permettent de voir. Les outils refusés par les politiques n'apparaîtront pas dans la liste.

## Outils de passerelle d'appels avec politique
<a name="call-gateway-tools"></a>

Passez des appels d'outils à votre passerelle. L'évaluation des politiques détermine si l'appel est autorisé ou refusé.

Sélectionnez l'une des méthodes suivantes :

**Example**  

1. 

   ```
   # Call a tool to test policy enforcement
   curl -X POST \
     https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
       "jsonrpc": "2.0",
       "id": "test-policy",
       "method": "tools/call",
       "params": {
         "name": "tool_name",
         "arguments": {arguments}
       }
     }'
   ```

1. 

   ```
   import requests
   import json
   
   def call_gateway_tool(gateway_url, access_token, tool_name, arguments):
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}"
       }
   
       payload = {
           "jsonrpc": "2.0",
           "id": "test-policy",
           "method": "tools/call",
           "params": {
               "name": tool_name,
               "arguments": arguments
           }
       }
   
       response = requests.post(gateway_url, headers=headers, json=payload)
       return response.json()
   
   # Example usage
   gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
   access_token = "YOUR_ACCESS_TOKEN"
   result = call_gateway_tool(
       gateway_url,
       access_token,
       "RefundTool___process_refund",
       {
           "orderId": "12345",
           "amount": 450,
           "reason": "Defective product"
       }
   )
   print(json.dumps(result, indent=2))
   ```

## Réponses politiques
<a name="policy-responses"></a>

Lorsqu'une politique autorise la demande :

```
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "isError": false,
    "content": [
      {
        "type": "text",
        "text": "ToolResult"
      }
    ]
  }
}
```

Lorsqu'une politique refuse la demande :

```
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "AuthorizeActionException - Tool Execution Denied: Tool call not allowed due to policy enforcement [No policy applies to the request (denied by default).]"
      }
    ],
    "isError": true
  }
}
```