Python API
ChatAuth 的 CLI 是 chatauth.operations 上的薄适配层。其他 ChatArch 包不应该 shell out 到 chatauth,而应直接调用这些 importable functions,并让 CLI 只负责参数解析与输出格式。
CLI 到 Python function 映射
| CLI | Python API | 说明 |
|---|---|---|
chatauth health |
doctor(...) |
读取 state 健康摘要 |
chatauth service init |
init_service(...) |
初始化 state DB、issuer metadata、signing key |
chatauth service doctor |
doctor(...) |
读取 state/config/key metadata |
chatauth admin clients list |
list_clients(...) |
列出 client 安全 metadata |
chatauth admin clients create |
create_client(...) |
创建 client;execute=False 为 dry-run |
chatauth admin subjects list |
list_subjects(...) |
列出 subject 安全 metadata |
chatauth admin subjects create |
create_subject(...) |
创建 subject;execute=False 为 dry-run |
chatauth admin grants list |
list_grants(...) |
列出 grant family 安全 metadata |
chatauth admin grants issue |
issue_refresh_grant(...) |
创建 refresh grant 并写 handoff 文件;不返回 token 明文 |
chatauth admin keys list |
list_keys(...) |
列出 signing key metadata |
chatauth admin keys jwks |
export_jwks(...) |
导出公开 JWKS |
chatauth token import-refresh |
import_refresh_token(...) |
从 handoff 文件导入 refresh token 到 runtime token-store |
chatauth token status |
token_status(...) |
读取 token-store metadata;不返回 token 明文 |
chatauth token refresh |
refresh_access_token(...) |
refresh grant rotation + access token 签发 |
chatauth token clear |
clear_token_store(...) |
删除显式 token-store |
chatauth verify jwks |
export_jwks(...) |
资源侧可用的 JWKS 导出 |
chatauth verify access-token |
verify_access_token(...) |
校验 access token issuer/audience/scope/signature |
API 使用示例
from pathlib import Path
from chatauth.operations import (
create_client,
create_subject,
export_jwks,
import_refresh_token,
init_service,
issue_refresh_grant,
refresh_access_token,
verify_access_token,
)
state_dir = Path(".chatauth-state")
token_store = Path(".runtime-token.json")
handoff = Path(".refresh-token.txt")
init_service(state_dir=state_dir, issuer="https://auth.example.test", execute=True)
client = create_client(
state_dir=state_dir,
name="demo",
audience="chatarch.internal",
scopes=["agent:run"],
execute=True,
)
create_subject(state_dir=state_dir, subject="machine:demo", execute=True)
issue_refresh_grant(
state_dir=state_dir,
client_id=client["client_id"],
subject="machine:demo",
audience="chatarch.internal",
scopes=["agent:run"],
handoff_file=handoff,
execute=True,
)
import_refresh_token(state_dir=state_dir, token_store=token_store, from_file=handoff, execute=True)
refresh_access_token(state_dir=state_dir, token_store=token_store, execute=True)
jwks = export_jwks(state_dir=state_dir)
result = verify_access_token(
state_dir=None,
token_store=token_store,
jwks=jwks,
issuer="https://auth.example.test",
audience="chatarch.internal",
scopes=["agent:run"],
)
assert result["valid"] is True
返回值约定
- 写操作在
execute=False时返回planned: true,不产生副作用。 - 任何 refresh token / access token 明文都不会出现在返回 dict 中。
- 输出面可以包含 path、ID、issuer、audience、scope、过期时间、布尔状态和计数。
verify_access_token(...)可以用jwks+issuer在没有 issuer private key 的资源服务进程中运行。