Logto 產品更新
Logto v1.43.0 新增具備 OAuth Client ID Metadata Documents 的動態應用程式、已簽署的 SAML 認證請求、有界的自訂 JWT 及 Actions 執行環境、更嚴格的權杖交換驗證,以及擴展的 Webhook 與企業級 SSO SSRF 保護。
Logto v1.43.0 新增具備 OAuth Client ID Metadata Documents 的動態應用程式、已簽署的 SAML 認證請求、有界的自訂 JWT 及 Actions 執行環境、更嚴格的權杖交換驗證,以及擴展的 Webhook 與企業級 SSO SSRF 保護。
Logto v1.43.0 拓展了應用程式與企業身份提供者的連接方式,同時強化了權杖和外部請求的安全邊界。本次版本帶來 OAuth Client ID Metadata Documents 支援的動態應用程式、已簽署的 SAML 認證請求,以及統一的 Custom JWT 和 Actions 執行環境。此發佈同時強化了權杖交換、webhook、企業 SSO,並改善了帳號中心,支援墨西哥西班牙語以及穩定性修正。以下是本次更新重點:
登入體驗現已支援 es-MX(墨西哥西班牙語)。
對於語言為墨西哥西班牙語的用戶,電話欄位預設國碼為墨西哥(+52)。此外,本次版本修復了清單格式器的參數,以及西班牙語區域剩餘未翻譯的 MFA 訊息。
透過管理 API 配置的外部請求,若解析為 loopback、私人、鏈路本地、雲端 metadata 或其他特殊用途位址,現已全面被阻擋。
現已防護範圍包含:
POST /api/hooks/:id/test。當建立連線時會檢查 DNS 名稱,因此解析到受保護位址的主機名稱將如實體 IP 位址一樣被拒絕。
除了僅允許第一方 subject 權杖,Logto 現在還會驗證作為 access_token subject 的 JWT 是否確實為存取權杖。
JWT 必須包含:
at+jwt 類型標頭。client_id 聲明。OIDC ID token 及其他租戶簽署的 JWT 將無法再被替代為 access token。無效的 subject 權杖將以 invalid_grant 拒絕。
第三方應用程式將無法再經由帳號 API 或驗證 API 變更帳號資料。該類請求現將回傳:
第一方應用(包括 Account Center 及 Console)不受影響。
未解析的用戶端識別會導致拒絕(Fail Closed)。這包括已刪除但仍有有效權杖的應用,以及識別為 metadata URL 的 CIMD 客戶端。
沒有讀取路徑被新增直接保護,但以下查詢需由受保護路徑建立的驗證紀錄,因此第三方應用將不再可存取:
GET /api/my-account/grantsGET /api/my-account/sessionsGET /api/my-account/mfa-verifications/backup-codes權杖發行及 userinfo 查詢現會以 invalid_grant 拒絕被停權用戶,這與已刪除用戶的現有行為一致。
此政策適用於 refresh token、authorization code、device code 及權杖交換流程,即使早期權杖或會話撤銷未完成亦然。
移除第三方應用的用戶授權範圍將同時影響現有授權及新授權請求。
invalid_scope 拒絕。insufficient_scope 拒絕。Sentinel 鎖定計數現與帳號查找採相同的標準化識別:
這可避免同一識別符號的變體建立不同的嘗試桶而削弱 maxAttempts。
手動解鎖亦會移除等價的拼寫(如確屬於同帳號)。升級後,已採非標準拼寫記錄的鎖定紀錄可能會提前結束,但沒有人會因此變得更嚴重鎖定。
redirect_to 必須為 http 或 https。ES256,P-384 用 ES384,P-521 用 ES512。invalid_scope 及 insufficient_scope 現會顯示遭拒 scope,而非原始 {{error_description}} 或 {{scope}} 替代標記。Accept-Language quality 值(如 en; q=0.7)現已正確解析。錯誤的 quality 值將安全地回退而非產生 NaN。gmail.com 和 googlemail.com 等同處理,並忽略 local-part 的點號。custom_profile_fields.entity_not_exists_with_names。POST /applications/:applicationId/user-consent-scopesPOST /organizations/:id/users/:userId/roles當 webhook POST 請求收到 HTTP 5xx 回應時,將最多重試 3 次,符合文件規範。
因為重試事件可能導致多次投遞,webhook 接收端應使用冪等方式處理事件。
Microsoft Azure AD 連接器現支援 disableEmailSync 選項。
預設情況下,此連接器會將 Microsoft Graph 的 mail 屬性同步到 Logto 用戶個人資料。啟用此選項時,連接器便僅驗證用戶,不會同步該地址,這與 Azure OIDC 企業 SSO 的現有控制一致。
需要採取動作 — 外部請求保護:若 webhook 或企業 SSO 連接器有意存取私有網路上的服務,請在升級前將需要的 IP 或 CIDR 範圍加入 SSRF_ALLOWED_ADDRESSES:
只列入必要目的地比全面關閉防護更安全。
動態應用兼容性:設定 SSRF_ALLOWED_ADDRESSES 時會停用 CIMD,這樣未驗證的動態客戶端無法利用白名單訪問私有服務。設 SSRF_PROTECTION_DISABLED=true 同樣會停用 CIMD。
設定兼容:OIDC_PROVIDER_SSRF_PROTECTION_DISABLED 仍然可作為 SSRF_PROTECTION_DISABLED 的別名。這些變數僅適用於自託部署時。
腳本執行限制:Custom JWT 及 Actions 腳本必須在 5 秒內完成,需保持在 128 MB 執行記憶體內,並回傳可序列化為 JSON 的值。
需遷移資料庫:本次版本包含新的資料表結構及索引。升級後,請先執行資料庫遷移指令(在 @logto/cli/core 映像中用 npm run alteration deploy,或用 logto db alteration deploy),再啟動新版本。詳見 升級指南。
特別感謝本次貢獻者:
Accept-Language quality 解析(#9338)看全部變更清單,請參見 完整變更記錄。