Figma OAuth Grant テーブル
概要
wf2des スケジューラが使用する組織単位の Figma OAuth 認証情報です。組織ごとに 1 行を保持します。
認可、暗号化、保存、リフレッシュは Admin API が担当します。wf2des ワーカーは PostgreSQL 認証情報を持たず、Figma 呼び出し時に有効なアクセストークンだけを Admin API から取得します。
このテーブルは、ユーザー単位の Personal Access Token(PAT)を保存し、リフレッシュトークンを持たない figma_token とは分離されています。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL許容 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| Figma OAuth Grant | figma_oauth_grant | organization_id | integer | ◯ | organization:id | 組織ごとに 1 グラント | |||
| access_token | text | AES-256-GCM で暗号化して保存 | |||||||
| refresh_token | text | AES-256-GCM で暗号化して保存。OAuth グラント専用で、figma_token には保存しない |
|||||||
| expires_at | datetime | アクセストークンの有効期限 | |||||||
| scopes | string | スペース区切りの OAuth スコープ | |||||||
| authorized_user_id | string | 認可した Figma ユーザー。監査用途のみ | |||||||
| created_at | datetime | ||||||||
| updated_at | datetime | ||||||||
| deleted_at | datetime | ◯ | |||||||
| created_by | string | user:cognito_sub | グラントを認可した管理者 | ||||||
| updated_by | string | user:cognito_sub | |||||||
| deleted_by | string | user:cognito_sub | ◯ |
リレーション
organization_id→organization.id(cascade delete)created_by/updated_by/deleted_by→user.cognito_sub
インデックス
- PRIMARY KEY (
organization_id)
備考
- Admin API はプラットフォームの
ENCRYPTION_KEYで両トークンを暗号化してから保存します。 - リフレッシュは PostgreSQL のトランザクション advisory lock により組織単位で直列化します。永続的な refresh marker カラムは不要です。
- Admin API は失効前にアクセストークンをリフレッシュし、Figma のレスポンスにリフレッシュトークンが含まれない場合は既存値を保持します。
- 内部 token provider は現在のアクセストークンと有効期限だけを返します。リフレッシュトークン、OAuth クライアントシークレット、暗号鍵、PostgreSQL 認証情報は AI ランタイムへ渡しません。
- 再認可時は組織の行を upsert します。