

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

# 指定访问网关目标的授权类型和凭证
<a name="gateway-building-adding-targets-authorization"></a>

在[CreateGatewayTarget](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_CreateGatewayTarget.html)请求正文中，您在`credentialProviderConfigurations`阵列中指定凭证提供者配置。配置取决于您设置的出站授权类型。有关凭证提供者配置的 API 结构的参考信息，请参阅[CredentialProviderConfiguration](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_CredentialProviderConfiguration.html)。有关出站授权的更多信息，请参阅为网关[设置出站授权](gateway-outbound-auth.md)。

要了解有关凭证提供者配置的更多信息，请选择一个主题：

**Topics**
+ [AgentCore 网关服务角色 (IAM) 授权](#gateway-building-adding-targets-authorization-service-role)
+ [OAuth 授权](#gateway-building-adding-targets-authorization-oauth)
+ [API 密钥授权](#gateway-building-adding-targets-authorization-api-key)
+ [来电者 IAM 证书授权](#gateway-building-adding-targets-authorization-caller-iam)
+ [JWT 直通授权](#gateway-building-adding-targets-authorization-jwt-passthrough)

## AgentCore 网关服务角色 (IAM) 授权
<a name="gateway-building-adding-targets-authorization-service-role"></a>

如果您通过 AgentCore 网关服务角色对目标使用 IAM 授权，请将指定`credentialProviderType`为`GATEWAY_IAM_ROLE`。配置取决于您的目标类型。

 **适用于 Lambda、API 网关、Smithy 和 Connector 目标 ** 

不需要进行`iamCredentialProvider`配置，因为 AgentCore 网关服务已经知道目标服务名称。仅使用`credentialProviderType`配置，如以下示例所示：

```
{
    "credentialProviderType": "GATEWAY_IAM_ROLE"
}
```

 **适用于 MCP 服务器和 OpenAPI 目标 ** 

对于 MCP 服务器和 OpenAPI 目标，您还必须提供用于[Amazon 签名版本 4 (Sig V4) 签名的服务名称。`iamCredentialProvider`](https://docs.amazonaws.cn/AmazonS3/latest/API/sig-v4-authenticating-requests.html)`service` 字段为必填项。该`region`字段是可选的，默认为网关的区域。

```
{
    "credentialProviderType": "GATEWAY_IAM_ROLE",
    "credentialProvider": {
        "iamCredentialProvider": {
            "service": "execute-api",
            "region": "us-west-2"
        }
    }
}
```

下表描述了`iamCredentialProvider`对象中的字段：


| 字段 | 必填 | 描述 | 
| --- | --- | --- | 
|  `service`  | 是 | 用于 SigV4 签名的 Amazon 服务名称。该值必须与目标在验证 SigV4 签名时期望的服务名称相匹配。以下是常用值：+   `bedrock-agentcore`— 适用于托管在 Amazon Bedrock 上的 MCP 服务器 AgentCore，例如运行时（请参阅在 AgentCore 运行时[部署 MCP 服务器](runtime-mcp.md)）或其他网关。 <br />+   `execute-api`— 适用于亚马逊 API Gateway 背后的 MCP 服务器或 OpenAPI 目标。 <br />+   `lambda`— 适用于 Lambda 函数 URL 后面的 MCP 服务器。  | 
|  `region`  | 否 | 用于 SigV4 签名的 Amazon 区域。如果省略，则默认为网关的区域。 | 

## OAuth 授权
<a name="gateway-building-adding-targets-authorization-oauth"></a>

如果您使用的是 OAuth 授权，则将指定为。`credentialProviderType` `OAUTH`在`credentialProvider`字段映射到的对象中，将`oauthCredentialProvider`字段名称映射到[OAuthCredentialProvider](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_OAuthCredentialProvider.html)对象，并根据您的出站授权设置提供值。

的结构因您设置的身份验证模式类型而[OAuthCredentialProvider](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_OAuthCredentialProvider.html)异。要了解有关不同身份验证模式的更多信息，请参阅[支持的身份验证模式](common-use-cases.md)。
+ 如果您设置了机器间身份验证（也称为客户端凭据授予或双边 OAuth (2LO)），请遵循客户端凭据选项卡中的结构。** **
+ 如果您设置了用户委托访问权限（也称为授权码授予或三段式 OAuth (3LO)），请按照授权码选项卡中的结构进行操作。** **
+ 如果您设置代理令牌交换以将经过身份验证的用户的身份传播到下游服务或使用参与者上下文获取访问令牌，请按照令牌交换 () 选项卡中的**结构进行操作。On-behalf-of **

选择以下方法之一：

**Example**  

1. 指定`grantType`为`CLIENT_CREDENTIALS`，如以下示例所示：

   ```
   {
       "credentialProviderType": "OAUTH",
       "credentialProvider": {
           "oauthCredentialProvider": {
               "providerArn": "string",
               "grantType": "CLIENT_CREDENTIALS",
               "scopes": [
                   "string",
                   ...
               ],
               "customParameters": {
                   "string": "string"
               }
           }
       }
   }
   ```

1. 指定`grantType`为，`AUTHORIZATION_CODE`并在`defaultReturnUrl`字段中包含获取授权码后将最终用户的浏览器重定向到的 URL，如以下示例所示：

   ```
   {
       "credentialProviderType": "OAUTH",
       "credentialProvider": {
           "oauthCredentialProvider": {
               "providerArn": "string",
               "grantType": "AUTHORIZATION_CODE",
               "defaultReturnUrl": "string",
               "scopes": [
                   "string",
                   ...
               ],
               "customParameters": {
                   "string": "string"
               }
           }
       }
   }
   ```

   要了解有关 3LO 身份验证的更多信息，请参阅 [ OAuth 2.0 授权 URL 会话绑定。](oauth2-authorization-url-session-binding.md)

1. 将 `grantType` 指定为 `TOKEN_EXCHANGE`。网关通过凭证提供商将入站用户的访问令牌交换为目标范围的令牌。在中包含任何 IdP-specific 参数`customParameters`。有关配置凭证提供商的更多信息，请参阅[On-behalf-of 令牌交换](on-behalf-of-token-exchange.md)。

   ```
   {
       "credentialProviderType": "OAUTH",
       "credentialProvider": {
           "oauthCredentialProvider": {
               "providerArn": "string",
               "grantType": "TOKEN_EXCHANGE",
               "scopes": [
                   "string",
                   ...
               ],
               "customParameters": {
                   "subject_token_type": "urn:ietf:params:oauth:token-type:access_token"
               }
           }
       }
   }
   ```
**注意**  
该`customParameters`字段将值直接传递到身份提供商的令牌端点。所需参数因提供商而异。例如，除了，Okta 还需要`subject_token_type`一个`audience`参数。有关详细信息，请参阅您的身份提供商的文档和[On-behalf-of 代币交换](on-behalf-of-token-exchange.md)。

## API 密钥授权
<a name="gateway-building-adding-targets-authorization-api-key"></a>

如果您设置 API 密钥授权，则将指定`credentialProviderType`为`API_KEY`。在`credentialProvider`字段映射到的对象中，将`apiKeyCredentialProvider`字段名称映射到[ApiKeyCredentialProvider](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_ApiKeyCredentialProvider.html)对象，并根据您的出站授权设置提供值。以下 JSON 显示了结构：

```
{
    "credentialProviderType": "API_KEY",
    "credentialProvider": {
        "apiKeyCredentialProvider": {
            "providerArn": "string",
            "credentialLocation": "HEADER" | "QUERY_PARAMETER",
            "credentialParameterName": "string",
            "credentialPrefix": "string"
        }
    }
}
```

## 来电者 IAM 证书授权
<a name="gateway-building-adding-targets-authorization-caller-iam"></a>

如果您希望网关使用调用者的 IAM 身份和权限来签署向下游目标发出的请求，请指定 `credentialProviderType` as `CALLER_IAM_CREDENTIALS`。使用这种授权类型，网关代表网关调用方使用 SigV4 向下游目标发出请求。这允许下游目标根据最初调用网关的人来应用 IAM 策略。

**注意**  
 `CALLER_IAM_CREDENTIALS`仅适用于具有`AWS_IAM`或`AUTHENTICATE_ONLY`作为授权方类型的网关。

```
{
    "credentialProviderType": "CALLER_IAM_CREDENTIALS"
}
```

## JWT 直通授权
<a name="gateway-building-adding-targets-authorization-jwt-passthrough"></a>

如果您希望网关在不修改的情况下将传入请求中的持有者令牌直接传递到下游目标，请将指定`credentialProviderType`为`JWT_PASSTHROUGH`。网关验证入站令牌，然后在出站请求中将其转发给目标。当目标服务使用原始调用者的令牌处理自己的授权时，这很有用。

**注意**  
 `JWT_PASSTHROUGH`仅适用于 HTTP 目标（直通和 AgentCore 运行时）。

```
{
    "credentialProviderType": "JWT_PASSTHROUGH"
}
```