• リリース
  • API SDK
  • ボールト
  • アカウント API

Logto 製品アップデート

🎉 7 月のリリースをご紹介します:Logto API SDK、フェデレーテッドトークンの保管のためのシークレットボールト、Account API による TOTP およびバックアップコードの管理、その他多数!

Simeng
Simeng
Developer

ユーザー認証に何週間も費やすのはもうやめましょう
Logto でより速く安全なアプリをリリース。数分で認証を統合し、コア製品に集中できます。
始めましょう
Product screenshot

Logto API SDK

TypeScript 用の SDK で、クライアントクレデンシャル認証を使って Logto の管理 API とやり取りできます。

使い方:

  1. Logto コンソールでマシン・トゥ・マシン アプリケーションを作成します。
  2. アプリケーションに管理 API へのアクセス権限を付与します。
  3. npm で SDK をインストールします: npm install @logto/api
  4. createManagementApi() を使い、アプリケーションのクレデンシャルで型付きの管理 API クライアントを作成します。

主な特徴:

  • OAuth トークンの認証や更新を自動的に処理します。
  • Logto Cloud とセルフホストインスタンスの両方をサポートします。
  • Logto の管理 API との統合を簡素化し、低レベルな API リクエストの対応ではなく機能開発に集中できます。

シークレットボールト

シークレットボールトは、Logto 内で機密ユーザーデータ(アクセストークン、API キー、パスコード、その他の機密情報)を安全に保管するためのストレージソリューションです。これらのシークレットは通常、ユーザーに代わってサードパーティサービスへアクセスする際に利用されるため、安全な保管が非常に重要です。

フェデレーテッドトークン保管対応

ソーシャルコネクタと企業 SSO コネクタの両方でトークン保管がサポートされました。有効化されると、Logto は認証成功後にアイデンティティプロバイダーから発行されたトークンセットを保管します。アプリケーションは後でアクセストークンを取得でき、ユーザーが再認証することなくサードパーティ API を呼び出せます。

サポートされるコネクタ:

  • ソーシャルコネクタ:GitHubGoogleFacebook標準 OAuth 2.0標準 OIDC
  • 企業向け SSO コネクタ:すべての OIDC ベース SSO コネクタ

動作の流れ:

  1. Logto コンソールまたは Logto 管理 API からソーシャルおよび企業 SSO コネクタのトークン保管を有効にします。
  2. 有効化されると、ユーザーが正常に認証した後、Logto がプロバイダーから発行されたトークンセットを自動的に保管します。
  3. 必要な際に Account API を通じて保管されたトークンを取得します。

詳細はシークレットボールトのドキュメントをご覧ください。

Account API で TOTP とバックアップコードの追加

ユーザーは 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: バックアップコードの取得

その他の改善

  • ソーシャルコネクタ: ソーシャルコネクタの認可 URL 生成時にカスタム scope パラメーターを指定できるようになりました。これにより Logto の social verification endpoint への呼び出し時に、ソーシャルプロバイダーから追加の権限を要求できます。 scope が指定された場合は認可リクエストでその値が使われ、指定がなければコネクタ設定のデフォルト scope が使用されます。
  • コンソール: 新しいシークレットボールト機能をよりよくサポートするため、ユーザー詳細ページのレイアウトをリファクタリングしました。ユーザーのソーシャルおよび企業 SSO のアイデンティティが新しい「コネクション」セクションに整理されます。このセクションでは、ユーザーがリンクしているすべてのコネクションを一覧表示し、サードパーティのアイデンティティ情報および(該当する場合)トークン保管状況を示します。各コネクションには詳細なユーザーアイデンティティページも用意されており、リンクされたアイデンティティと関連トークンに関する追加情報が確認できます。

バグ修正

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) への複合外部キー制約を追加しました。これにより、データベースレベルで厳密なテナント分離が担保されます。