Logto 製品アップデート
🎉 7 月のリリースをご紹介します:Logto API SDK、フェデレーテッドトークンの保管のためのシークレットボールト、Account API による TOTP およびバックアップコードの管理、その他多数!
🎉 7 月のリリースをご紹介します:Logto API SDK、フェデレーテッドトークンの保管のためのシークレットボールト、Account API による TOTP およびバックアップコードの管理、その他多数!
TypeScript 用の SDK で、クライアントクレデンシャル認証を使って Logto の管理 API とやり取りできます。
使い方:
npm install @logto/apicreateManagementApi() を使い、アプリケーションのクレデンシャルで型付きの管理 API クライアントを作成します。主な特徴:
シークレットボールトは、Logto 内で機密ユーザーデータ(アクセストークン、API キー、パスコード、その他の機密情報)を安全に保管するためのストレージソリューションです。これらのシークレットは通常、ユーザーに代わってサードパーティサービスへアクセスする際に利用されるため、安全な保管が非常に重要です。
ソーシャルコネクタと企業 SSO コネクタの両方でトークン保管がサポートされました。有効化されると、Logto は認証成功後にアイデンティティプロバイダーから発行されたトークンセットを保管します。アプリケーションは後でアクセストークンを取得でき、ユーザーが再認証することなくサードパーティ API を呼び出せます。
サポートされるコネクタ:
動作の流れ:
詳細はシークレットボールトのドキュメントをご覧ください。
ユーザーは Account API を通して TOTP とバックアップコードを追加できるようになりました。
POST /api/my-account/mfa-verifications/totp-secret/generate: TOTP シークレットの生成POST /api/my-account/mfa-verifications/backup-codes/generate: バックアップコードの生成POST /api/my-account/mfa-verifications: 生成されたシークレットまたはコードを使って TOTP またはバックアップコードを追加GET /api/my-account/mfa-verifications/backup-codes: バックアップコードの取得scope パラメーターを指定できるようになりました。これにより Logto の social verification endpoint への呼び出し時に、ソーシャルプロバイダーから追加の権限を要求できます。 scope が指定された場合は認可リクエストでその値が使われ、指定がなければコネクタ設定のデフォルト scope が使用されます。organization_user_relations テーブルのテナント対応外部キー制約
問題点
開発者が他のテナントの user_id を誤って組織に割り当ててしまい、組織ユーザー API のエンドポイントで 500 エラーが発生する可能性がありました。元の organization_user_relations テーブルには users (id) への外部キー制約しかなく、テナントの分離に関係なく存在するユーザー ID が割り当てられてしまう問題がありました。
根本原因
Logto は全テーブルに Row Level Security (RLS) を適用し、テナントデータへのアクセスを分離します。ユーザーテーブルと organization_user_relations を結合した際、RLS 制限により実際のユーザーデータが現在のテナントからアクセスできなくなり、ユーザーデータが null で返されて 500 サーバーエラーが発生していました。
解決策
組織-ユーザー関連のテナント ID がユーザーのテナント ID と一致することを保証するため、(tenant_id, user_id) から users (tenant_id, id) への複合外部キー制約を追加しました。これにより、データベースレベルで厳密なテナント分離が担保されます。