29 lines
1.2 KiB
SQL
29 lines
1.2 KiB
SQL
-- IAM-13: NEXARCH als OIDC-Provider fuer Drittanwendungen eines Mandanten.
|
|
-- Client-Registrierung und Authorization-Codes leben pro Mandant (nicht in
|
|
-- der zentralen Registry), weil ein OAuth2-Client konzeptionell zu genau
|
|
-- einem Kunden gehoert (siehe core-kanban/tickets/IAM-13.md).
|
|
|
|
CREATE TABLE oidc_clients (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name TEXT NOT NULL,
|
|
client_id TEXT NOT NULL UNIQUE,
|
|
secret_hash BYTEA NOT NULL,
|
|
redirect_uris TEXT[] NOT NULL,
|
|
allowed_scopes TEXT[] NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Auth-Codes sind bewusst kurzlebig und einmal verwendbar (RFC 6749 4.1.2):
|
|
-- used_at IS NULL in der WHERE-Klausel beim Einloesen macht das Konsumieren
|
|
-- atomar, gleiches Muster wie internal/authtoken (IAM-03).
|
|
CREATE TABLE oidc_auth_codes (
|
|
code_hash BYTEA PRIMARY KEY,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients(client_id),
|
|
user_id UUID NOT NULL REFERENCES users(id),
|
|
redirect_uri TEXT NOT NULL,
|
|
scopes TEXT[] NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
used_at TIMESTAMPTZ
|
|
);
|