JWT认证服务

一个基于FastAPI的最小化JWT认证服务,用于本地测试和探索基于JWT的认证。

  • by mstfbiccer
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mstfbiccer/auth-mcp

使用说明

认证API(JWT HS256)

一个最小化的FastAPI服务,用于生成演示JSON Web Tokens (JWT),这些JWT使用HS256算法签名。该服务适用于本地测试和探索基于JWT的身份验证。

特点/功能

  • 签发带有可配置主题、电子邮件、角色和TTL(生存时间)的HS256签名JWT。
  • 一个简单的JSON API,包含一个用于铸造代币的单一登录端点。

要求

  • Python 3.10+(项目采用现代类型提示和FastAPI)
  • requirements.txt 中列出的依赖项

安装

  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate
  1. 安装依赖项:
pip install -r requirements.txt

配置(环境变量)

  • JWT_SECRET - 用于签名令牌的秘密(默认:dev_only_change_me_32+chars)
  • JWT_ISSUER - 令牌发行者(默认:mcp.jwt.example)
  • JWT_AUDIENCE - 令牌受众(默认:mcp-clients)
  • TOKEN_TTL_SECONDS_DEFAULT - 令牌默认生存时间(以秒为单位)(默认:3600)

用法

使用 uvicorn 在本地运行应用程序:

uvicorn auth:app --host 127.0.0.1 --port 8010 --reload

终点(或:终端点)

  • GET /

    • 返回一个简单的JSON状态,表示服务正在运行。
  • POST /auth/login 翻译为中文是:“发送POST请求到/auth/login(登录认证接口)”。

    • 请求体(application/json):

      • sub(字符串)- 主题/用户ID(必填)
      • 电子邮件(字符串,电子邮件格式)- 可选
      • 角色(“用户” | “管理员”)- 默认为“用户”
      • `ttlSeconds`(整数)- 令牌有效期(以秒为单位)(可选,默认值为`TOKEN_TTL_SECONDS_DEFAULT`)
    • 响应(application/json):

      • 令牌 - JWT(承载者令牌)
      • token_type - "Bearer"(中文翻译为:令牌类型 - “承载者”)
      • expires_in - 到过期为止的秒数

示例

请求:

curl -X POST "http://127.0.0.1:8010/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"sub":"alice","email":"alice@example.com","role":"user","ttlSeconds":3600}'

回应:

{
  "token": "<jwt-token>",
  "token_type": "Bearer",
  "expires_in": 3600
}

注释

  • 此项目仅用于演示或本地开发。请勿在生产环境中使用默认的JWT_SECRET。
  • 实现过程中使用了PyJWT库来编码令牌,并使用FastAPI来暴露HTTP API。

许可证

  • 未提供明确的许可证(如打算发布或分享代码,请添加一个)。