feat: add authentik jwt verification and me endpoints
This commit is contained in:
@@ -20,4 +20,5 @@
|
||||
- 後端骨架:已建立(FastAPI + SQLAlchemy)
|
||||
- 核心 API:已建立(health/internal/admin)
|
||||
- API key 驗證:已建立(`X-Client-Key` + `X-API-Key`)
|
||||
- Authentik 深度整合:待補(目前先保留介接欄位與流程位置)
|
||||
- Authentik JWT 驗證:已建立(`/me` 路由 + JWKS 驗簽)
|
||||
- Authentik Admin API(建立/停用使用者):待補
|
||||
|
||||
@@ -49,6 +49,10 @@
|
||||
## 5. API 設計(MVP)
|
||||
- 健康檢查
|
||||
- `GET /healthz`
|
||||
- 使用者路由(Bearer token)
|
||||
- `GET /me`
|
||||
- `GET /me/permissions/snapshot`
|
||||
- Bearer token 由 Authentik JWT + JWKS 驗證,並以 `sub` 自動 upsert user
|
||||
- 內部路由(系統對系統)
|
||||
- `POST /internal/users/upsert-by-sub`
|
||||
- `GET /internal/permissions/{authentik_sub}/snapshot`
|
||||
@@ -65,6 +69,9 @@
|
||||
- `api_key_hash` 驗證(支援 `sha256:<hex>` 與 bcrypt/argon2)
|
||||
- allowlist 驗證(origin/ip/path)
|
||||
- `internal` 路由使用 `X-Internal-Secret` 做服務間驗證
|
||||
- `me` 路由使用 Authentik Access Token 驗證:
|
||||
- 使用 `AUTHENTIK_JWKS_URL` 或 `AUTHENTIK_ISSUER` 推導 JWKS
|
||||
- 可選 `AUTHENTIK_AUDIENCE` 驗證 aud claim
|
||||
- 建議上線前:
|
||||
- 將 `.env` 範本中的明文密碼改為部署平台 secret
|
||||
- API key 全部改為 argon2/bcrypt hash
|
||||
|
||||
@@ -20,7 +20,15 @@ source .venv/bin/activate
|
||||
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload
|
||||
```
|
||||
|
||||
## 4. 快速驗證
|
||||
## 4. Authentik JWT 最小設定
|
||||
`.env` 至少填一種:
|
||||
- `AUTHENTIK_JWKS_URL=<jwks endpoint>`
|
||||
- `AUTHENTIK_ISSUER=<issuer url>`(系統會推導 `<issuer>/jwks/`)
|
||||
|
||||
可選:
|
||||
- `AUTHENTIK_AUDIENCE=<audience>`
|
||||
|
||||
## 5. 快速驗證
|
||||
```bash
|
||||
curl -sS http://127.0.0.1:8000/healthz
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user