

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

在[CreateGatewayTarget](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateGatewayTarget.html)请求正文中，您可以在`credentialProviderConfigurations`数组中指定凭证提供程序配置。配置取决于您设置的出站授权类型。有关证书提供者配置的 API 结构的参考信息，请参阅[CredentialProviderConfiguration](https://docs.aws.amazon.com/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 Gateway、Smithy 和 Connector 目标** 

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

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

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

对于 MCP 服务器和 OpenAPI 目标，您还必须提供`iamCredentialProvider`[AWS 用于签名版本 4 (Sig V4) 签名的](https://docs.aws.amazon.com/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 签名的 AWS 服务名称。此值必须与目标在验证 Sigv4 签名时期望的服务名称相匹配。以下是常用值：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/bedrock-agentcore/latest/devguide/gateway-building-adding-targets-authorization.html) | 
|  `region`  | 否 | SigV4 签名的 AWS 区域。如果省略，则默认为网关的区域。 | 

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

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

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

选择以下方法之一：

**Example**  

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

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

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

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

   要了解有关 3LO 身份验证的更多信息，请参阅 [OAuth 2.0 授权网址](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.aws.amazon.com/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`为`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>

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

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

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