Skip to content

13.3 MCP 身份驗證

MCP 支援多種身份驗證方式,確保安全地連線到 MCP 伺服器。

OAuth 2.0

OAuth 2.0 流程

MCP 伺服器可以使用 OAuth 2.0 進行身份驗證:

  1. Claude Code 發起 OAuth 請求
  2. 使用者重定向到授權頁面
  3. 使用者授權應用
  4. 授權伺服器返回訪問令牌
  5. Claude Code 使用令牌訪問 MCP 伺服器
### 配置 OAuth 2.0

#### 添加 OAuth 服务器

    bash


    # 添加需要 OAuth 的服务器
    claude mcp add --transport http github https://api.githubcopilot.com/mcp/

#### 进行身份验证

    bash


    # 在 Claude Code 中进行身份验证
    /mcp
    # 选择需要身份验证的服务器
    # 选择 "github"

#### OAuth 流程

    bash


    # 1. Claude Code 显示授权 URL
    # 请访问以下 URL 进行授权:
    # https://github.com/login/oauth/authorize?client_id=...

    # 2. 用户访问 URL 并授权
    # 3. 授权服务器返回访问令牌
    # 4. Claude Code 保存令牌

### OAuth 2.0 作用域

#### 定义作用域

OAuth 2.0 使用作用域限制許可權:

    bash


    # 添加带作用域的服务器
    claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
    --scope "repo,user"

#### 常见作用域


  * **repo** : 倉庫訪問許可權
  * **user** : 使用者資訊訪問許可權
  * **admin** : 管理員許可權
  * **read** : 只讀許可權
  * **write** : 讀寫許可權

### 令牌管理

#### 查看令牌

    bash


    # 查看已保存的令牌
    显示 OAuth 令牌

#### 刷新令牌

    bash


    # 刷新访问令牌
    刷新 GitHub 令牌

#### 撤销令牌

    bash


    # 撤销访问令牌
    撤销 GitHub 令牌

## API 密钥

### 使用 API 密钥

#### 添加带 API 密钥的服务器

    bash


    # Bearer 令牌
    claude mcp add --transport http api https://api.example.com/mcp \
    --header "Authorization: Bearer your-api-key"

    # API 密钥
    claude mcp add --transport http api https://api.example.com/mcp \
    --header "X-API-Key: your-api-key"

    # 自定义标头
    claude mcp add --transport http api https://api.example.com/mcp \
    --header "X-Custom-Auth: your-custom-key"

#### 环境变量

使用環境變數傳遞 API 金鑰:

bash
    bash


    # 设置环境变量
    export API_KEY="your-api-key"

    # 使用环境变量
    claude mcp add --transport http api https://api.example.com/mcp \
      --header "Authorization: Bearer ${API_KEY}"

### 密钥安全

#### 加密存储

Claude Code 加密儲存 API 金鑰:

    bash


    # 密钥自动加密存储
    claude mcp add --transport http api https://api.example.com/mcp \
    --header "Authorization: Bearer your-api-key"

#### 密钥轮换

定期輪換 API 金鑰:

    bash


    # 1. 生成新密钥
    # 2. 更新服务器配置
    claude mcp remove api
    claude mcp add --transport http api https://api.example.com/mcp \
      --header "Authorization: Bearer new-api-key"

    # 3. 撤销旧密钥

## 证书身份验证

### 使用证书

#### 添加带证书的服务器

    bash


    # 使用客户端证书
    claude mcp add --transport http secure-api https://api.example.com/mcp \
    --cert /path/to/cert.pem \
    --key /path/to/key.pem

    # 使用 CA 证书
    claude mcp add --transport http secure-api https://api.example.com/mcp \
    --cacert /path/to/ca.pem

#### 证书格式

支援的證書格式:

  • PEM : 最常用的格式
  • DER : 二進位制格式
  • PKCS12 : 包含私鑰和證書
bash
### 证书管理

#### 查看证书

    bash


    # 查看证书信息
    openssl x509 -in /path/to/cert.pem -text -noout

#### 验证证书

    bash


    # 验证证书
    openssl verify -CAfile /path/to/ca.pem /path/to/cert.pem

#### 更新证书

    bash


    # 1. 获取新证书
    # 2. 更新服务器配置
    claude mcp remove secure-api
    claude mcp add --transport http secure-api https://api.example.com/mcp \
      --cert /path/to/new-cert.pem \
      --key /path/to/new-key.pem

## 自定义身份验证

### 自定义认证头

    bash


    # 使用自定义认证头
    claude mcp add --transport http custom-api https://api.example.com/mcp \
    --header "X-Custom-Auth: custom-value"

### 多因素认证

    bash


    # 使用多因素认证
    claude mcp add --transport http secure-api https://api.example.com/mcp \
      --header "X-Auth-Token: token" \
      --header "X-Auth-Code: code"

### 签名请求

    bash


    # 使用签名请求
    claude mcp add --transport http signed-api https://api.example.com/mcp \
    --header "X-Signature: signature" \
    --header "X-Timestamp: timestamp"

## 身份验证最佳实践

### 1\. 使用最小权限原则

    bash


    # 只请求必要的权限
    claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
      --scope "repo:read"

### 2\. 定期轮换凭证

    bash


    # 每 90 天轮换一次 API 密钥
    # 设置提醒

### 3\. 使用环境变量

    bash


    # 使用环境变量存储敏感信息
    export API_KEY="your-api-key"
    claude mcp add --transport http api https://api.example.com/mcp \
      --header "Authorization: Bearer ${API_KEY}"

### 4\. 加密存储

    bash


    # 使用加密存储
    # Claude Code 自动加密存储敏感信息

### 5\. 审计访问

    bash


    # 定期审计访问日志
    显示身份验证日志

## 故障排除

### OAuth 2.0 问题

#### 授权失败


**問題** : OAuth 授權失敗

**解决方案** :

    bash


    # 1. 检查授权 URL
    /mcp

    # 2. 确认用户授权
    # 确保用户完成了授权流程

    # 3. 检查作用域
    # 确认请求的作用域正确

    # 4. 重新授权
    撤销 GitHub 令牌
    /mcp
    # 重新进行授权

#### 令牌过期


**問題** : 訪問令牌過期

**解决方案** :

    bash


    # 1. 刷新令牌
    刷新 GitHub 令牌

    # 2. 如果刷新失败,重新授权
    撤销 GitHub 令牌
    /mcp
    # 重新进行授权

### API 密钥问题

#### 密钥无效


**問題** : API 金鑰無效

**解决方案** :

    bash


    # 1. 验证密钥
    # 检查密钥是否正确

    # 2. 检查密钥权限
    # 确认密钥有足够的权限

    # 3. 更新密钥
    claude mcp remove api
    claude mcp add --transport http api https://api.example.com/mcp \
    --header "Authorization: Bearer new-api-key"

#### 密钥过期


**問題** : API 金鑰過期

**解决方案** :

    bash


    # 1. 生成新密钥
    # 2. 更新服务器配置
    claude mcp remove api
    claude mcp add --transport http api https://api.example.com/mcp \
      --header "Authorization: Bearer new-api-key"

### 证书问题

#### 证书无效


**問題** : 證書無效

**解决方案** :

    bash


    # 1. 验证证书
    openssl verify -CAfile /path/to/ca.pem /path/to/cert.pem

    # 2. 检查证书有效期
    openssl x509 -in /path/to/cert.pem -text -noout | grep "Not After"

    # 3. 更新证书
    claude mcp remove secure-api
    claude mcp add --transport http secure-api https://api.example.com/mcp \
    --cert /path/to/new-cert.pem \
    --key /path/to/new-key.pem

#### 证书过期

問題 : 證書過期

bash
**解决方案** :

    bash


    # 1. 获取新证书
    # 2. 更新服务器配置
    claude mcp remove secure-api
    claude mcp add --transport http secure-api https://api.example.com/mcp \
      --cert /path/to/new-cert.pem \
      --key /path/to/new-key.pem

## 安全建议

### 1\. 保护凭证

    bash


    # 不要在代码中硬编码凭证
    # 使用环境变量
    export API_KEY="your-api-key"

    # 不要在版本控制中提交凭证
    # 添加到 .gitignore
    echo ".env" >> .gitignore

### 2\. 使用强凭证

    bash


    # 使用强密码
    # 使用长随机字符串作为 API 密钥
    # 定期轮换凭证

### 3\. 限制权限

    bash


    # 使用最小权限原则
    # 只授予必要的权限
    claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
    --scope "repo:read"

### 4\. 监控使用

    bash


    # 定期监控 API 使用
    显示 API 使用统计

    # 检查异常活动
    显示异常访问日志

### 5\. 及时撤销

    bash


    # 及时撤销不需要的凭证
    撤销 GitHub 令牌
    撤销 API 密钥

基于 MIT 许可发布 | 永久导航