Files

26 lines
1.2 KiB
SQL

-- ZITADEL 统一登录(v2.9.0):身份绑定 + 一次性授权 state
-- 身份主键是 (issuer, subject),email 仅作资料展示、绝不参与判定(实例无 SMTP,邮箱可能缺失)
-- OIDC 身份绑定:统一登录账号 ↔ 本地 users 的映射(重复登录同一 subject 刷新资料,不报冲突)
CREATE TABLE IF NOT EXISTS oidc_identities (
id TEXT PRIMARY KEY,
issuer TEXT NOT NULL, -- IdP 签发者(如 https://auth.my.qiaonao.net)
subject TEXT NOT NULL, -- IdP 的 sub(身份主键的一部分)
user_id TEXT NOT NULL, -- 本地 users.id
display_name TEXT, -- 展示名(兜底链取值,可为空)
email TEXT, -- 纯资料,可为空,永不作为身份键
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
UNIQUE(issuer, subject)
);
CREATE INDEX IF NOT EXISTS idx_oidc_identities_user ON oidc_identities(user_id);
-- OIDC 一次性 state:承载 code_verifier(PKCE)与回跳路径,用后即删
CREATE TABLE IF NOT EXISTS oidc_states (
state TEXT PRIMARY KEY,
code_verifier TEXT NOT NULL,
return_to TEXT NOT NULL,
created_at TEXT NOT NULL,
expires_at TEXT NOT NULL
);