mcpField
A
api-authentication

api-authentication

github.com/secondsky安全240539 次安装5 周前更新
代码仓库

关于 api-authentication

面向 API 开发者的身份验证实施技能,介绍 JWT、OAuth 2.0、API 密钥和会话等方案,并涵盖安全要求与常见错误。

主要功能

  1. 01介绍 JWT 身份验证
  2. 02涵盖 OAuth 2.0 集成
  3. 03说明 API 密钥与会话方案
  4. 04提供 Node.js 与 Flask 示例
  5. 05列出认证安全要求

适用场景

  1. 01为 API 选择身份验证方式
  2. 02实现 JWT 令牌认证
  3. 03接入第三方 OAuth 服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/claude-skills --skill api-authentication

安装后在 Claude Code 中输入/api-authentication确认已加载。

附带文件references/python-flask.md

详细介绍

API 身份验证

使用现代标准和最佳实践,为 API 实现安全的身份验证机制。

身份验证方法

方法使用场景安全级别
JWT无状态身份验证、SPA高
OAuth 2.0第三方集成高
API Keys服务间调用中
Session传统 Web 应用高

JWT 实现(Node.js)

const jwt = require('jsonwebtoken');

const generateTokens = (user) => ({
  accessToken: jwt.sign(
    { userId: user.id, role: user.role },
    process.env.JWT_SECRET,
    { expiresIn: '15m' }
  ),
  refreshToken: jwt.sign(
    { userId: user.id, type: 'refresh' },
    process.env.REFRESH_SECRET,
    { expiresIn: '7d' }
  )
});

const authMiddleware = (req, res, next) => {
  const authHeader = req.headers.authorization;

  // Validate authorization header format
  if (!authHeader || !authHeader.startsWith('Bearer ')) {
    return res.status(401).json({ error: 'Malformed authorization header' });
  }

  const parts = authHeader.split(' ');
  if (parts.length !== 2) {
    return res.status(401).json({ error: 'Malformed authorization header' });
  }

  const token = parts[1];
  if (!token) {
    return res.status(401).json({ error: 'No token provided' });
  }

  try {
    req.user = jwt.verify(token, process.env.JWT_SECRET);
    next();
  } catch (err) {
    res.status(401).json({ error: 'Invalid token' });
  }
};

安全要求

  • 始终使用 HTTPS
  • 将令牌存储在 HttpOnly Cookie 中(而不是 localStorage)
  • 使用 bcrypt 哈希密码(成本因子为 12+)
  • 在身份验证端点实施速率限制
  • 定期轮换密钥
  • 切勿在 URL 中传输令牌

安全标头

app.use((req, res, next) => {
  res.setHeader('X-Content-Type-Options', 'nosniff');
  res.setHeader('X-Frame-Options', 'DENY');
  res.setHeader('Strict-Transport-Security', 'max-age=31536000');
  next();
});

其他实现

请参阅 references/python-flask.md,了解:

  • 使用基于角色的访问控制装饰器实现 Flask JWT
  • 使用 Authlib 集成 OAuth 2.0 Google
  • 使用安全哈希实现 API 密钥身份验证

应避免的常见错误

  • 存储明文密码
  • 使用弱 JWT 密钥
  • 忽略令牌过期时间
  • 在生产环境中禁用 HTTPS
  • 记录敏感令牌

评论

支持 Markdown