认证API(JWT HS256)
一个最小化的FastAPI服务,用于生成演示JSON Web Tokens (JWT),这些JWT使用HS256算法签名。该服务适用于本地测试和探索基于JWT的身份验证。
特点/功能
- 签发带有可配置主题、电子邮件、角色和TTL(生存时间)的HS256签名JWT。
- 一个简单的JSON API,包含一个用于铸造代币的单一登录端点。
要求
- Python 3.10+(项目采用现代类型提示和FastAPI)
- requirements.txt 中列出的依赖项
安装
- 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate- 安装依赖项:
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": "",
"token_type": "Bearer",
"expires_in": 3600
}注释
- 此项目仅用于演示或本地开发。请勿在生产环境中使用默认的JWT_SECRET。
- 实现过程中使用了PyJWT库来编码令牌,并使用FastAPI来暴露HTTP API。
许可证
- 未提供明确的许可证(如打算发布或分享代码,请添加一个)。
