26 lines
1.2 KiB
SQL
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
|
|
);
|