

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 授权流程
<a name="policy-authorization-flow"></a>

亚马逊 Bedrock AgentCore Gateway 根据传入的请求评估 Cedar 政策。本节说明授权信息如何从请求流向策略评估。

## 请求处理
<a name="policy-request-processing"></a>

亚马逊 Bedrock AgentCore Gateway 处理来自每个请求的两个关键信息：

1.  **JWT 代币 **-包含有关用户的 OAuth 声明：

   ```
   {
     "sub": "12345678-1234-1234-1234-123456789012",
     "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Vg2efaoGO",
     "username": "refund-agent",
     "scope": "aws.cognito.signin.user.admin refund:write",
     "role": "admin",
     "department": "finance"
   }
   ```

1.  **MCP 工具调用请求 **-实际的工具调用：

   ```
   {
     "jsonrpc": "2.0",
     "id": 1,
     "method": "tools/call",
     "params": {
       "name": "RefundTool___process_refund",
       "arguments": {
         "orderId": "12345",
         "amount": 450,
         "reason": "Defective product"
       }
     }
   }
   ```

## 雪松授权申请
<a name="policy-cedar-authorization-request"></a>

网关从两个来源提取信息并构造一个 Cedar 授权请求。

 **完成授权申请：**

```
{
  "principal": "AgentCore::OAuthUser::\"12345678-1234-1234-1234-123456789012\"",
  "action": "AgentCore::Action::\"RefundTool___process_refund\"",
  "resource": "AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway\"",
  "context": {
    "input": {
      "orderId": "12345",
      "amount": 450,
      "reason": "Defective product"
    }
  }
}
```

 **组件：**

Principal  
根据 JWT 代币的子声明创建：  

```
AgentCore::OAuthUser::"12345678-1234-1234-1234-123456789012"
```

处理建议  
从工具名称中提取：  

```
AgentCore::Action::"RefundTool___process_refund"
```

资源  
网关实例：  

```
AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway"
```

上下文  
包含工具参数：  

```
{
  "input": {
    "orderId": "12345",
    "amount": 450,
    "reason": "Defective product"
  }
}
```

 **实体存储 **-JWT 声明作为标签存储在 OAuthUser 实体上：

```
{
  "uid": {
    "type": "AgentCore::OAuthUser",
    "id": "12345678-1234-1234-1234-123456789012"
  },
  "attrs": {
    "id": "12345678-1234-1234-1234-123456789012"
  },
  "tags": {
    "username": "refund-agent",
    "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Vg2efaoGO",
    "scope": "aws.cognito.signin.user.admin refund:write",
    "role": "admin",
    "department": "finance"
  }
}
```

## 临时策略的会话上下文
<a name="policy-flow-session-context"></a>

当`x-amzn-bedrock-agentcore-policy-session-id`标头存在时，网关会在传递给策略引擎的授权请求中包含会话上下文。会话上下文提供当前会话的累积操作历史记录。临时策略规则使用此历史记录来评估一段时间内的限制条件。

```
{
  "principal": "AgentCore::OAuthUser::\"12345678-1234-1234-1234-123456789012\"",
  "action": "AgentCore::Action::\"PaymentTool___transfer_funds\"",
  "resource": "AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway\"",
  "context": {
    "input": {
      "amount": 500,
      "recipient": "account-789"
    }
  },
  "sessionId": "12345678-1234-1234-1234-123456789012"
}
```

该`sessionId`字段将当前请求链接到其会话历史记录。策略引擎解析会话状态，并根据累积的操作链评估所有适用的时间规则。

有关提供会话 ID、会话生命周期以及身份如何在多跳呼叫中传播的详细信息，请参阅[策略会话和身份传播。](policy-session-based-temporal.md)

## 策略评估
<a name="policy-evaluation"></a>

Cedar 评估：

1.  **校长支票：校长**是 OAuthUser吗？✓（比赛）

1.  **操作检查：操作**是 RefundTool \_\_\_process\_redund 吗？✓（比赛）

1.  **资源检查：资源**是退款网关吗？✓（比赛）

1.  **条件检查：**
   + 校长有用户名标签吗？✓（是的，来自 JWT）
   + 用户名是 “退款代理” 吗？✓（是的）
   + context.input.amount 是否小于 500？ ✓ (450 < 500)

 **结果：**允许-所有支票均通过，退款已获批准。