Files
mcp-auth/backend/app/core/deps.py
T
2026-09-02 17:31:52 +08:00

34 lines
1.2 KiB
Python

"""FastAPI 依赖:IAM token 校验,提取当前管理员
从请求头 digi-middleware-auth-user / digi-middleware-auth-app 读取凭证,
调用 IAM /api/iam/v2/identity/token/analyze 校验并解析用户信息。
"""
from fastapi import Header, HTTPException, status
from . import iam
async def current_admin(
user_token: str | None = Header(None, alias="digi-middleware-auth-user"),
app_token: str | None = Header(None, alias="digi-middleware-auth-app"),
) -> dict:
if not user_token:
raise HTTPException(status.HTTP_401_UNAUTHORIZED, "未提供 IAM userToken")
info = await iam.analyze_token(user_token, app_token)
if info is None:
raise HTTPException(status.HTTP_401_UNAUTHORIZED, "IAM token 无效或已过期")
# 返回统一的管理员信息(兼容原有 admin.get("username") 调用)
return {
"username": info.get("name") or info.get("id") or "unknown",
"userId": info.get("id"),
"name": info.get("name"),
"email": info.get("email"),
"telephone": info.get("telephone"),
"tenantId": info.get("tenantId"),
"tenantName": info.get("tenantName"),
"raw": info,
}