Logto 製品アップデート
Logto v1.42.0 では、カスタムドメイン用の検証ファイル、ワイルドカードパターン対応のメール許可リスト、パスワードリセット用マジックリンク、Grant.LimitExceeded Webhook、ノードプロトコル層の node-oidc-provider v9/Koa 3 への刷新と OIDC 送信系 SSRF 保護がデフォルト有効になっています。
Logto v1.42.0 では、カスタムドメイン用の検証ファイル、ワイルドカードパターン対応のメール許可リスト、パスワードリセット用マジックリンク、Grant.LimitExceeded Webhook、ノードプロトコル層の node-oidc-provider v9/Koa 3 への刷新と OIDC 送信系 SSRF 保護がデフォルト有効になっています。
Logto v1.42.0 は、ドメインとプロトコルに関するリリースです。追加のホストを立てる必要なくドメイン所有権を証明できる仕組み、どのメールがテナントに登録できるかの詳細制御、エンドユーザー向けのよりスムーズなパスワードリセット体験を提供します。内部的には、Logto を node-oidc-provider v9 と Koa 3 へ移行し、OIDC 送信リクエストの SSRF 保護を標準有効化しています。主な変更点はこちらです。
サードパーティサービスは、多くの場合、ドメイン所有権の確認のために決まったパスで小さなファイルを提供することを求めます。これまでは Logto カスタムドメインの横で別ホストを稼働させる必要がありました。
これからは Console > テナント設定 > ドメイン からアクティブなカスタムドメインに検証ファイルを追加できます。
各ファイルは、以下の属性を持ちます:
/verify.txt のようなルート直下のファイル名と拡張子、または /.well-known/ 以下のパス。text/plain または application/json のいずれかの Content-Type。JSON の場合は保存時に検証されます。1 ドメインあたり最大 10 ファイルまで設定でき、各パスはユニークです。Logto は正確な GET と HEAD リクエストに対し、設定された Content-Type でレスポンス強化込みでファイルを返します。Logto の既存のルートは検証ファイルとパスが重なった場合も必ず優先されるため、設定ミスによるエンドポイントの隠蔽は起こりません。コンソールの体験は全対応言語でローカライズ済みです。
Logto はファイル内容に関知しないため、どのプロバイダーの検証方式でも、その仕様を個別にモデル化することなく利用できます。
メールブロックリストポリシーが、より充実したメールアクセスルールに進化し、コンソール > セキュリティ > メールブロックリスト で設定できます。
カスタムメール許可リスト。 許可リストでメールアドレス、ドメイン、ワイルドカードパターンを設定できます。許可リスト設定時は、新規サインアップ・新規メール連携の両方で許可リストに一致しないメールは全て拒否されます。
ワイルドカードパターン。 許可リスト・ブロックリストともに foo*@example.com、*@example.com、@*.example.com などのワイルドカードアドレスやドメインのパターン、[email protected](完全一致)および @example.com(ドメイン一致)にも対応しています。
ルール衝突時の警告。 許可リストがブロックルールと一致する場合、許可リストに + 記号が含まれているのにサブアドレッシングが禁止されている場合、また、設定したルールの組み合わせですべての新規メールが締め出されてしまう場合、それぞれ警告が表示されます。
マッチングとバリデーションのロジックは @logto/core-kit の共通ヘルパーで提供され、テナント内のあらゆるメール入力時に同一ルールが適用されます。
Experience アプリで、パスワードリセット時のワンタイムトークンのマジックリンク直接検証(リセットページ直リンク)に対応し、従来の検証コード方式も併用できます。
Grant.LimitExceeded Webhook イベントOIDC グラントがアプリの許容上限を超えた場合、Logto は Grant.LimitExceeded の Webhook イベントを発火します。コンソールの Webhook 設定画面で他イベントと同様に選択できます。
ペイロードには userId、applicationId、revokedGrantIds、maxAllowedGrants、preRevocationActiveGrantCount が含まれます。発火は fire-and-forget 方式で、失敗時は TriggerHook.Grant.LimitExceeded の監査ログへ記録されるだけで、認証レスポンスを妨げません。
大きな変更点は、トークン廃止処理のセキュリティ修正です。
不透明型アクセストークンの廃止時に、関連する全トークン(リフレッシュトークンも含む)がまとめて無効化されます(v8 ではリフレッシュトークンだけ有効のままで再発行を続けられました)。
v9 の他のプロトコル更新内容:
unsupported_token_type で拒否(v8 では成功返却して何も廃止しなかった)/oidc/.well-known/oauth-authorization-server に提供at_hash クレームを削除typ: "JWT" ヘッダーも削除(OpenID Connect 仕様上、ID トークンは JWT であると定義されており、このヘッダーはいらない)カスタム ID トークン検証時の対応。 正式な Logto SDK 利用時は不要ですが、独自実装の場合は at_hash クレームの欠落、typ: "JWT" ヘッダーの欠落どちらも許容してください。
Logto は Koa 3 で稼働し始めました。現行のメンテナンスリリースラインでありセキュリティフィックスが最速で入ります。既存の全エンドポイント・OIDC フロー・API レスポンスに動作変更はありません。
identities ユーザースコープが必須となります。rediss プロトコル利用時に Redis クラスターの TLS 有効化が正しく動作します。jose 依存性を削除。これによりコネクターインストール時に不要なパッケージが引き込まれません。対応必要 — OIDC プロバイダー SSRF 保護。 外部通信のセキュリティが強化され、SSRF 保護は標準で enabled です。プライベートネットワーク内の信頼済みリライングパーティーにアクセスが必要なセルフホスト環境では、Logto 起動前に OIDC_PROVIDER_SSRF_PROTECTION_DISABLED=true を設定してください。
DB マイグレーション必須。 このリリースにはカスタムドメイン検証ファイル用のスキーマ変更、内部インデックス・テーブル追加も含まれています。アップグレード後は新バージョン起動前に DB アルタレーションコマンドを実行してください(@logto/cli/core イメージでは npm run alteration deploy、または logto db alteration deploy)。詳細はアップグレードガイドを参照。
カスタム ID トークン検証:node-oidc-provider v9 セクションも要確認。at_hash と typ ヘッダーの仕様が変更されています。
本リリースの機能追加にご貢献いただいたコミュニティメンバーの皆さまに心より感謝します:
Grant.LimitExceeded webhook イベント(#9230)、トランザクション形式のパスワードレスコネクター置換(#9277)rediss TLS 修正(#9144)アップグレードの準備はできましたか?手順はアップグレードガイドをチェックしてください。
全変更一覧はGitHub リリースページで確認できます。
質問やフィードバックは Discord に参加するか GitHub でイシューを投稿 してください。