

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

# 将 OAuth 访问权限配置为 AWS MCP 服务器
<a name="aws-mcp-server"></a>

## 概述
<a name="aws-mcp-server-overview"></a>

AWS MCP 服务器支持通过以下方式进行 OAuth 授权。 AWS Sign-In通过 OAuth 授权，代理 AWS 可以使用您已经在和中使用的相同身份、权限和监管模型进行访问。 AWS 管理控制台 AWS CLI当您授权代理时，它可以代表您访问 AWS MCP 服务器。授权不会向代理授予额外 AWS 权限。

使用本指南配置 OAuth 对 AWS MCP 服务器的访问权限。它涵盖了支持的授权模式、所需的 IAM 权限以及如何管理和监控 OAuth 访问权限。

有关中的 OAuth 支持的更多信息 AWS Sign-In，请参阅。[Sign-In 使用 OAuth 2.0](oauth-sign-in-overview.md)

## 先决条件
<a name="aws-mcp-server-prereqs"></a>

在将代理连接到 AWS MCP 服务器之前，请确保：
+ 您的 IAM 身份具有 OAuth 授权所需的权限。
+ 您的代理支持模型上下文协议 (MCP)。
+ 您的代理支持 OAuth 2.1 授权。

通过附加[AWS 托管策略](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMCPSignInOAuthAccessPolicy.html)来授予所需的权限：

```
aws iam attach-role-policy \
  --role-name {{MyRole}} \
  --policy-arn arn:aws:iam::aws:policy/AWSMCPSignInOAuthAccessPolicy
```

该管理策略授予：
+ `signin:AuthorizeOAuth2Access`
+ `signin:CreateOAuth2Token`

如果您以 AWS 账户 根用户身份进行身份验证，则不需要额外的 IAM 权限。

## DCR 支持的重定向 URI
<a name="aws-mcp-server-supported-redirect-uris"></a>

在 OAuth 授权过程中，代理可以注册 AWS Sign-In 并使用一个或多个经批准的重定向 URI。


| OAuth 客户端 | 重定向 URI | 
| --- | --- | 
| 本地主机 | localhost, 127.0.0.1 | 
| Claude | https://claude.ai/\* | 
| 光标桌面 | cursor://anysphere.cursor-mcp/oauth/callback | 
| 网游标 | https://www.cursor.com/agents/mcp/oauth/callback | 
| Visual Studio Code | vscode://\* | 
| Visual Studio 代码（Web） | https://vscode.dev/\* | 
| ChatGPT | https://chatgpt.com/\* | 
| ChatGPT 连接器 | https://chatgpt.com/connector\_platform\_oauth\_redirect | 
| 重复 | https://replit.com/ | 
| 讨人喜欢 | https://lovable.app/\* | 
| 可爱的开发者 | https://lovable.dev/\* | 
| Vercel v0 | https://api.v0.dev/v1/mcp-servers/oauth/callback | 

## 将代理连接到 AWS MCP 服务器
<a name="aws-mcp-server-connect"></a>

配置 OAuth-compatible 代理的步骤因应用程序而异。有关支持的代理的说明，请参阅《[AWS MCP 服务器指南》](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/getting-started-aws-mcp-server.html)。

一般的工作流程是：

1. 配置 AWS MCP 服务器端点。

1. 通过身份验证 AWS Sign-In 或以编程方式获取 OAuth 访问令牌。

1. 批准授权请求（仅限交互流程）。

1. 开始调用 AWS MCP 服务器提供的工具。

## 授权模型
<a name="aws-mcp-server-auth-models"></a>

AWS MCP 服务器支持提供的 AWS Sign-In授权模型。

### 交互式授权
<a name="aws-mcp-server-interactive"></a>

交互式授权适用于在本地工作站上使用代理的开发人员。

当代理需要授权时：

1. 代理将用户重定向到。 AWS Sign-In

1. 用户使用其身份进行 AWS 身份验证。

1. 用户查看并批准授权请求。

1. AWS Sign-In 发放 OAuth 访问权限和刷新令牌。

1. 代理代表用户访问 AWS MCP 服务器。

所需的 IAM 权限：
+ `signin:AuthorizeOAuth2Access`
+ `signin:CreateOAuth2Token`

### Non-interactive 授权
<a name="aws-mcp-server-non-interactive"></a>

Non-interactive 授权使用 OAuth 2.0 客户端凭证授权。它适用于已经拥有 AWS 凭据且无法执行基于浏览器的身份验证的代理和应用程序。

应用程序使用现有的 AWS 签名版本 4 (SigV4) 凭据进行身份验证，并通过 API 获取 OAuth 访问令牌。`CreateOAuth2TokenWithIAM`

与交互式流程不同，仅颁发访问令牌。当当前令牌到期时，应用程序会请求新的访问令牌。

所需的 IAM 权限：
+ `signin:CreateOAuth2Token`

以下示例显示如何使用获取访问令牌 AWS CLI：

```
aws signin create-oauth2-token-with-iam \
    --grant-type client_credentials \
    --resource aws-mcp.amazonaws.com \
    --region us-east-1
```

## OAuth 资源类型
<a name="aws-mcp-server-resource-types"></a>

AWS Sign-In 将 OAuth 授权目标和公共 OAuth 客户端表示为 IAM 资源。您可以在 IAM 策略中引用这些资源来授予或控制 OAuth 授权。

目前支持以下资源类型。


| 资源类型 | ARN 格式 | 说明 | 
| --- | --- | --- | 
| AWS MCP 服务器 | arn:aws:signin:{{region}}:{{account-id}}:service-principal/aws-mcp.amazonaws.com | 代表 AWS MCP 服务器。使用此资源为访问 AWS MCP 服务器的应用程序授予或控制 OAuth 授权。 | 
| OAuth 公共客户端（同一设备） | arn:aws:signin:{{region}}:{{account-id}}:oauth2/public-client/localhost | 代表用于同设备授权的 AWS CLI 公共 OAuth 客户端。将此资源与浏览器一起使用aws login，并在同一设备上 AWS CLI 运行。 | 
| OAuth 公共客户端（跨设备） | arn:aws:signin:{{region}}:{{account-id}}:oauth2/public-client/remote | 代表用于跨设备授权的 AWS CLI 公共 OAuth 客户端。将此资源与一起使用aws login --remote，其中身份验证是在单独的设备上完成的。 | 

## 代币生命周期
<a name="aws-mcp-server-token-lifecycle"></a>

AWS Sign-In 管理为 AWS MCP 服务器发行的 OAuth 令牌的生命周期。


| 令牌 | 说明 | 
| --- | --- | 
| 交互式访问令牌 | 有效期长达一小时。在刷新令牌保持有效期间自动刷新。 | 
| Non-interactive 访问令牌 | 在一小时或剩余的 AWS 会话持续时间内有效。应用程序在到期后请求新令牌。 | 
| 刷新令牌 | 仅为交互式授权颁发。允许应用程序获取新的访问令牌，而无需用户再次登录。刷新令牌是轮换的，一次性使用。 | 

## 管理 OAuth 代币
<a name="aws-mcp-server-token-management"></a>

AWS Sign-In 提供用于验证和管理 OAuth 授权的 API。


| API | 用途 | 
| --- | --- | 
| [`IntrospectOAuth2Token`](https://docs.aws.amazon.com/signin/latest/APIReference/API_dataplane-signin_IntrospectOAuth2TokenWithIAM.html) | 返回描述 OAuth 令牌的元数据。 | 
| [`RevokeOAuth2Token`](https://docs.aws.amazon.com/signin/latest/APIReference/API_dataplane-signin_RevokeOAuth2TokenWithIAM.html) | 撤消刷新令牌。 | 

## 监控 OAuth 活动
<a name="aws-mcp-server-monitoring"></a>

OAuth-related 活动记录在 AWS CloudTrail。

CloudTrail 记录事件包括：
+ OAuth 授权请求
+ OAuth 代币发行
+ 代币反省
+ 代币撤销

CloudTrail 还记录 OAuth 客户端、重定向 URI、授权流程、 AWS MCP 服务器资源和关联 AWS Sign-In 会话，允许管理员将 AWS API 活动与原始 OAuth 授权相关联。

示例 CloudTrail 事件可用于：
+ `AuthorizeOAuth2Access`
+ `CreateOAuth2Token`

**示例 — AuthorizeOAuth2Access 事件：**

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAEXAMPLE:testuser",
        "arn": "arn:aws:sts::111111111111:assumed-role/Admin/testuser",
        "accountId": "111111111111",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAEXAMPLE",
                "arn": "arn:aws:iam::111111111111:role/Admin",
                "accountId": "111111111111",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2026-06-09T05:06:39Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2026-06-09T05:09:00Z",
    "eventSource": "signin.amazonaws.com",
    "eventName": "AuthorizeOAuth2Access",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
    "requestParameters": {
        "resource": "https://aws-mcp.us-west-2.api.aws/mcp",
        "redirect_uri": "http://127.0.0.1:60432/oauth/callback",
        "code_challenge_method": "S256",
        "client_id": "arn:aws:signin:us-west-2::external-client/dcr/b3f2c8a1-9d4e-4f7a-8c6b-2e1f5a3d9b7c"
    },
    "responseElements": null,
    "additionalEventData": {
        "success": "true"
    },
    "requestID": "4fb4ff7b-6yu7-9090-78i9-9c0088a65134",
    "eventID": "bb05b222-31ec-4237-b8e7-8eb26d4fd48b",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111111111111",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "us-west-2.oauth.signin.aws"
    }
}
```

**示例 — CreateOAuth2Token 事件：**

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAEXAMPLE:testuser",
        "arn": "arn:aws:sts::111111111111:assumed-role/Admin/testuser",
        "accountId": "111111111111",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAEXAMPLE",
                "arn": "arn:aws:iam::111111111111:role/Admin",
                "accountId": "111111111111",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2026-06-09T05:06:39Z",
                "mfaAuthenticated": "false"
            },
            "signInSessionArn": "arn:aws:signin:us-west-2:111111111111:session/daff060f-7871-4ab6-92cd-a07bbdabe61a"
        }
    },
    "eventTime": "2026-06-09T05:10:04Z",
    "eventSource": "signin.amazonaws.com",
    "eventName": "CreateOAuth2Token",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "192.0.2.1",
    "userAgent": "curl/8.7.1",
    "requestParameters": {
        "resource": "https://aws-mcp.us-west-2.api.aws/mcp",
        "client_id": "arn:aws:signin:us-west-2::external-client/dcr/b3f2c8a1-9d4e-4f7a-8c6b-2e1f5a3d9b7c"
    },
    "responseElements": null,
    "additionalEventData": {
        "signInSessionArn": "arn:aws:signin:us-west-2:111111111111:session/daff060f-7871-4ab6-92cd-a07bbdabe61a",
        "grant_type": "refresh_token",
        "success": "true"
    },
    "requestID": "44d6d7ce-e4r5-4cbf-0909-bfb8a8295a76",
    "eventID": "f79cc63f-b383-4e3c-a1e5-97c7db1ab833",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111111111111",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "us-west-2.oauth.signin.aws"
    }
}
```

有关使用 OAuth 访问令牌向 MCP 服务器发出的呼叫的其他审计事件和日志记录详细信息，请参阅 AWS M [AWS CP 服务器日志记录指南。 CloudTrail ](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/logging-using-cloudtrail.html)

## 问题排查
<a name="aws-mcp-server-troubleshooting"></a>

### 连接时权限被拒绝 AWS MCP 服务器
<a name="aws-mcp-server-ts-permission-denied"></a>

验证您的 IAM 身份是否具有 AWS MCP 服务器授权授予资源的`signin:AuthorizeOAuth2Access`和`signin:CreateOAuth2Token`权限。

### 访问令牌已过期
<a name="aws-mcp-server-ts-token-expired"></a>

交互式授权会自动刷新访问令牌，同时关联的刷新令牌仍然有效。如果刷新令牌已过期或已被撤销，请通过您的代理再次进行身份验证。

对于非交互式授权，您可以从令牌端点请求新的访问令牌。

### 目标资源无效
<a name="aws-mcp-server-ts-invalid-resource"></a>

调用时`CreateOAuth2TokenWithIAM`，验证`resource`参数是否标识了支持的目标服务。对于 AWS MCP 服务器，使用 AWS MCP 服务器服务主体。

### 代理无法注册为 OAuth 客户端
<a name="aws-mcp-server-ts-dcr"></a>

只有经批准的代理才能通过动态客户机注册 (DCR) 进行注册。如果您正在开发 MCP-compatible 代理，请联系 AWS 支持人员。

### OAuth 条件密钥政策未生效
<a name="aws-mcp-server-ts-condition-key"></a>

验证条件密钥是否适用于正在评估的 IAM 操作。某些条件密钥仅受特定的 OAuth 操作支持。有关更多信息，请参阅 [Sign-In 使用 OAuth 2.0](oauth-sign-in-overview.md)。

### 会话已撤销，但代理仍有访问权限
<a name="aws-mcp-server-ts-session-revoked"></a>

撤消刷新令牌会立即阻止发行新的访问令牌。现有访问令牌在过期（最多一小时）之前一直有效。

要立即进行控制，请使用`aws:SignInSessionArn`全局条件密钥应用 IAM 策略，拒绝与受影响登录会话相关的请求。

## 相关主题
<a name="aws-mcp-server-related"></a>
+ [Sign-In 使用 OAuth 2.0](oauth-sign-in-overview.md)
+ [AWS Sign-In 条件键参考](reference-signin-condition-keys.md)
+ [将代理连接到 AWS MCP 服务器 ](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/getting-started-aws-mcp-server.html)