本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS MCP 伺服器
概觀
AWS MCP Server 透過 AWS 登入支援 OAuth 授權。透過 OAuth 授權,客服人員可以使用您已與 AWS 管理主控台 和 AWS 搭配使用的相同身分、許可和控管模型來存取 AWS CLI。當您授權代理程式時,代理程式可以代表您存取 AWS MCP 伺服器。授權不會授予代理程式其他 AWS 許可。
使用本指南設定 AWS MCP Server 的 OAuth 存取。它涵蓋支援的授權模型、必要的 IAM 許可,以及如何管理和監控 OAuth 存取。
如需 AWS Sign-In 中 OAuth 支援的詳細資訊,請參閱 使用 OAuth 2.0 登入。
先決條件
將代理程式連線至 AWS MCP Server 之前,請確定:
-
您的 IAM 身分具有 OAuth 授權所需的許可。
-
您的代理程式支援模型內容通訊協定 (MCP)。
-
您的代理程式支援 OAuth 2.1 授權。
連接 AWS 受管政策以授予必要的許可:
aws iam attach-role-policy \ --role-nameMyRole\ --policy-arn arn:aws:iam::aws:policy/AWSMCPSignInOAuthAccessPolicy
此受管政策授予:
-
signin:AuthorizeOAuth2Access -
signin:CreateOAuth2Token
如果您以 AWS 帳戶 根使用者身分進行身分驗證,則不需要額外的 IAM 許可。
DCR 支援的重新導向 URIs
客服人員可以向 AWS Sign-In 註冊,並在 OAuth 授權程序期間使用一或多個核准的重新導向 URIs。
| OAuth 用戶端 | 重新導向 URI (s) |
|---|---|
| Localhost | localhost, 127.0.0.1 |
| Claude | https://claude.ai/* |
| 游標桌面 | cursor://anysphere.cursor-mcp/oauth/callback |
| 游標 Web | https://www.cursor.com/agents/mcp/oauth/callback |
| Visual Studio 程式碼 | 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/* |
| Lovable 開發人員 | https://lovable.dev/* |
| Vercel v0 | https://api.v0.dev/v1/mcp-servers/oauth/callback |
將 代理程式連線至 AWS MCP 伺服器
設定 OAuth 相容代理程式的步驟會因應用程式而異。如需支援代理程式的說明,請參閱 AWS MCP 伺服器指南。
一般工作流程為:
-
設定 AWS MCP Server 端點。
-
透過 AWS Sign-In 驗證或以程式設計方式取得 OAuth 存取權杖。
-
核准授權請求 (僅限互動式流程)。
-
開始叫用 AWS MCP Server 提供的工具。
授權模型
AWS MCP Server 支援 AWS Sign-In 提供的授權模型。
互動式授權
互動式授權適用於在本機工作站上使用代理程式的開發人員。
當代理程式需要授權時:
-
代理程式會將使用者重新導向至 AWS 登入。
-
使用者使用其 AWS 身分進行身分驗證。
-
使用者會檢閱並核准授權請求。
-
AWS 登入會發出 OAuth 存取和重新整理權杖。
-
代理程式會代表使用者存取 AWS MCP Server。
必要的 IAM 許可:
-
signin:AuthorizeOAuth2Access -
signin:CreateOAuth2Token
非互動式授權
非互動式授權使用 OAuth 2.0 用戶端憑證授予。它適用於已經擁有 AWS 登入資料且無法執行瀏覽器型身分驗證的客服人員和應用程式。
應用程式使用現有的 AWS Signature 第 4 版 (SigV4) 登入資料進行身分驗證,並透過 CreateOAuth2TokenWithIAM API 取得 OAuth 存取權杖。
與互動式流程不同,只會發出存取權杖。當目前的權杖過期時,應用程式會請求新的存取權杖。
必要的 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 資源類型
AWS Sign-In 代表 OAuth 授權目標和公有 OAuth 用戶端做為 IAM 資源。您可以在 IAM 政策中參考這些資源,以授予或控制 OAuth 授權。
目前支援下列資源類型。
| Resource Type (資源類型) | ARN 格式 | 說明 |
|---|---|---|
| AWS MCP 伺服器 | arn:aws:signin: |
代表 AWS MCP 伺服器。使用此資源為存取 AWS MCP Server 的應用程式授予或控制 OAuth 授權。 |
| OAuth 公有用戶端 (相同裝置) | arn:aws:signin: |
代表相同裝置授權的 AWS CLI 公有 OAuth 用戶端。使用此資源搭配 aws login,其中瀏覽器和 在同一裝置上 AWS CLI 執行。 |
| OAuth 公有用戶端 (跨裝置) | arn:aws:signin: |
代表跨裝置授權的 AWS CLI 公有 OAuth 用戶端。使用此資源搭配 aws login --remote,其中身分驗證是在不同的裝置上完成。 |
字符生命週期
AWS Sign-In 會管理針對 AWS MCP Server 發行的 OAuth 權杖生命週期。
| 權杖 | 說明 |
|---|---|
| 互動式存取權杖 | 有效期最長為一小時。在重新整理權杖保持有效時自動重新整理。 |
| 非互動式存取字符 | 有效期為較短的一小時或剩餘的 AWS 工作階段持續時間。應用程式會在過期後請求新的權杖。 |
| 重新整理權杖 | 僅針對互動式授權發行。允許應用程式取得新的存取字符,而不需要使用者再次登入。重新整理字符會輪換並單次使用。 |
管理 OAuth 權杖
AWS Sign-In 提供APIs。 OAuth
| API | 用途 |
|---|---|
IntrospectOAuth2Token |
傳回描述 OAuth 字符的中繼資料。 |
RevokeOAuth2Token |
撤銷重新整理權杖。 |
監控 OAuth 活動
OAuth 相關活動會記錄在其中 AWS CloudTrail。
CloudTrail 會記錄事件,包括:
-
OAuth 授權請求
-
OAuth 字符發行
-
權杖簡介
-
字符撤銷
CloudTrail 也會記錄 OAuth 用戶端、重新導向 URI、授權流程、 AWS MCP 伺服器資源和相關聯的 AWS 登入工作階段,讓管理員將 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" } }
您可以在 MCP Server CloudTrail 記錄指南中找到使用 OAuth 存取字符對 AWS MCP Server 進行呼叫的其他稽核事件和記錄詳細資訊。 AWS CloudTrail
疑難排解
連線至 AWS MCP 伺服器時拒絕許可
確認您的 IAM 身分具有 AWS MCP Server 授權授予資源的 signin:AuthorizeOAuth2Access和 signin:CreateOAuth2Token許可。
存取字符已過期
互動式授權會在相關聯的重新整理權杖保持有效時自動重新整理存取權杖。如果重新整理字符已過期或已撤銷,請透過您的代理再次驗證。
對於非互動式授權,您可以從權杖端點請求新的存取權杖。
無效的目標資源
呼叫 時CreateOAuth2TokenWithIAM,請確認 resource 參數識別支援的目標服務。對於 AWS MCP Server,請使用 AWS MCP Server 服務主體。
代理程式無法註冊為 OAuth 用戶端
只有核准的客服人員可以透過動態用戶端註冊 (DCR) 進行註冊。如果您正在開發與 MCP 相容的客服人員,請聯絡 AWS 支援。
OAuth 條件金鑰政策未生效
確認條件金鑰適用於要評估的 IAM 動作。某些條件索引鍵僅受特定 OAuth 動作支援。如需詳細資訊,請參閱使用 OAuth 2.0 登入。
工作階段已撤銷,但客服人員仍然具有存取權
撤銷重新整理字符會立即防止發出新的存取字符。現有的存取權杖會持續有效,直到過期為止 (最多一小時)。
若要立即遏制,請使用aws:SignInSessionArn全域條件金鑰套用 IAM 政策,以拒絕與受影響登入工作階段相關聯的請求。