# authz-service

`authz-service` 现在已经整理成独立 Docker 单元。

## 组成

- `Dockerfile`
  - 生产镜像构建入口
- `docker-entrypoint.sh`
  - 初始化数据目录并启动 `uvicorn`
- `start-authz.sh`
  - 本地或服务器快速启动脚本
- `.env.example`
  - 推荐的环境变量模板
- `runtime/seed-data/`
  - 空白初始化数据
- `src/`
  - 原始 FastAPI 应用代码

## 设计约定

- 容器监听端口：`19090`
- 容器内数据目录：`/var/lib/authz-service/data`
- 首次启动时如果数据目录为空，会自动写入空白 JSON
- `signing_key.pem` 不会被打进镜像
  - 如果挂载目录里不存在签名 key，服务会在首次启动时自动生成

## 快速启动

```bash
cd /home/ivan/xuan/beaver_project/authz-service
cp .env.example .env
set -a
. ./.env
set +a
./start-authz.sh --build
```

启动后验证：

```bash
curl http://127.0.0.1:19090/healthz
curl http://127.0.0.1:19090/.well-known/jwks.json
```

## 生产建议

- 用挂载卷保存 `runtime/data`
- 显式设置 `AUTHZ_INTERNAL_TOKEN`
- 显式设置外部可访问的 `AUTHZ_ISSUER`
  - 例如 `https://authz.example.com`
- 如果要让 AuthZ 负责编排实例注册，还要设置 `DEPLOY_API_BASE_URL`
- 如果 deploy-control 开了鉴权，还要设置 `DEPLOY_API_TOKEN`
- 不要提交本地运行产生的 `runtime/data/` 内容

## API 说明

接口说明仍然看：

- `/home/ivan/xuan/beaver_project/authz-service/src/README.md`
