อัปเดตผลิตภัณฑ์ Logto
Logto v1.46.0 มาแล้ว พร้อมฟีเจอร์ OIDC step-up authentication, ลงชื่อเข้าใช้ด้วย Ethereum, วิธีคง prompt บันทึกรหัสผ่านของ iOS, self-service personal access tokens และการปรับปรุงความปลอดภัยในหลายจุด
Logto v1.46.0 มาแล้ว พร้อมฟีเจอร์ OIDC step-up authentication, ลงชื่อเข้าใช้ด้วย Ethereum, วิธีคง prompt บันทึกรหัสผ่านของ iOS, self-service personal access tokens และการปรับปรุงความปลอดภัยในหลายจุด
Logto v1.46.0 มาพร้อม OIDC step-up authentication สำหรับการดำเนินการที่สำคัญ, ลงชื่อเข้าใช้ด้วย Ethereum, วิธีคง prompt “บันทึกรหัสผ่าน” ของ iOS และ self-service personal access tokens ที่ Account Center รวมถึงการรองรับ GeeTest CAPTCHA, SAML static attributes และการเสริมความปลอดภัยอีกหลายรายการ นี่คือสิ่งใหม่:
แอปสามารถร้องขอการยืนยันตัวตนล่าสุดหรือเข้มงวดขึ้นก่อนทำการสำคัญ โดยใช้พารามิเตอร์ OIDC มาตรฐาน
acr_values และ max_age ใน authorization request แล้วอ่านค่า acr, amr และ auth_time จาก ID tokens, access tokens และ introspection responses ค่า ACR ที่รองรับจะระบุไว้ใน discovery documentmax_ageดู คู่มือ Step-up authentication สำหรับรายละเอียดและวิธีตั้งค่า
Ethereum Wallet social connector ตัวใหม่ (@logto/connector-siwe) ให้ผู้ใช้ลงชื่อเข้าใช้ด้วย EVM wallet ได้ ผู้ใช้ที่มี browser wallet (provider ตาม EIP-1193) จะเซ็นข้อความ Sign-In with Ethereum (EIP-4361) ครั้งเดียว โดยไม่ต้องออกจากหน้าลงชื่อเข้าใช้ หนึ่ง address ใช้งานได้ข้าม EVM chain ที่รองรับ ผู้ดูแลระบบสามารถจำกัด chain IDs ได้
บน iOS, ASWebAuthenticationSession จะปิดทันทีที่เห็น callback URL ของแอป ทำให้ prompt "บันทึกรหัสผ่าน" ของระบบหายไปหลังกรอก password
ส่งพารามิเตอร์ใหม่ confirm_redirect_policy=password ในการลงชื่อเข้าใช้ เพื่อแสดงหน้า "Continue" หลังผู้ใช้กรอกรหัสผ่าน หน้าเพจจะกลับแอปเมื่อผู้ใช้กด "Continue" เท่านั้น ทำให้ prompt คงอยู่ หากไม่ส่งพารามิเตอร์นี้ Logto จะ redirect กลับเหมือนเดิม
คู่มือใช้งาน Swift integration บน Console มีตัวอย่างวิธีใช้งาน ดู วิธีคง prompt บันทึกรหัสผ่าน iOS
เมื่อเปิดใช้ personal access tokens ใน Account Center ผู้ใช้สามารถสร้าง เปลี่ยนชื่อ และเพิกถอน token ของตัวเองในหน้า Security ของ Account Center token แต่ละชิ้นจะแสดงให้เห็นครั้งเดียวหลังสร้าง และหมดอายุใน 365 วัน
การดำเนินการเหล่านี้ทำได้ทาง Account API ที่ /api/my-account/personal-access-tokens ด้วย scope ใหม่ urn:logto:scope:personal_access_tokens
mfa.required ทาง Management API ผู้ใช้ต้องตั้ง MFA ในการลงชื่อเข้าใช้ครั้งถัดไป ไม่ว่าจะมีนโยบาย MFA ขององค์กรอย่างไร$5$ หรือ $6$) ด้วยอัลกอริธึม Legacy passwordaccess_denied เมื่อยกเลิกลงชื่อเข้าใช้: การยกเลิกหน้าถามยินยอม หรือ sign-in โดยตรงที่ล้มเหลว ตอนนี้ผู้ใช้จะถูกส่งกลับไคลเอนต์พร้อม access_denied ประสบการณ์ sign-in แบบ custom สามารถยุติ interaction ได้แบบเดียวกันด้วย POST /api/experience/abortlogin_hint สำหรับ Account Center: เติม login_hint ใน URL ของ Account Center เพื่อเติมข้อมูล (identifier) อัตโนมัติหากผู้ใช้ต้องลงชื่อเข้าใช้staticAttributes บน Management APIsame-origin-allow-popups หรือ same-origin ใน Console > Sign-in experience > Branding > Bring your UI ค่าเริ่มต้นไม่ส่ง header ทำให้แอปที่เปิด sign-in แบบ popup ใช้งานได้ตามเดิมGET /api/users รองรับ customData หมายเหตุ query parameter ได้หลายค่าซ้ำ เช่น customData={"customId":114514}GET /api/organizations รับพารามิเตอร์ jitEmailDomain เพื่อหา organizations ที่ user ซึ่งใช้ email domain ดังกล่าวจะถูก provision ให้เข้าhasPassword สำหรับสมาชิกองค์กร: GET /api/organizations/:id/users จะแสดงว่าผู้ใช้แต่ละรายตั้ง password หรือไม่deliveryId: ทุก webhook payload มี deliveryId ซึ่งเหมือนกันในแต่ละครั้งที่ retry ทำให้ receiver ตรวจสอบไม่ให้ process ซ้ำ และยังใช้เป็น log ID ของ audit log รายการนั้นรุ่นนี้มีการแก้ไข security ใน MFA, การเข้าสู่ระบบด้วย social/enterprise, Account API และ Logto Tunnel
Range request ขณะให้ service ไฟล์ staticดู v1.46.0 release notes สำหรับรายละเอียดทั้งหมด
502 connector.social_provider_unreachable การปฏิเสธสิทธิจะขึ้น 401 connector.authorization_failed และ error ของ connector จะแสดงข้อความจริงแทนที่จะเป็น {}scope มีช่องว่างข้างหน้า: สำหรับ client เช่น OpenAI Codex ที่ส่ง scope มีช่องว่างนำหน้า refresh token request จะไม่ล้มเหลวด้วย invalid_scope อีกต่อไป ผู้ใช้จึง sign-in ค้างอยู่ได้customClientMetadata แปลกๆ อีก เช่น พิมพ์ผิด refreshTokenTtlInDay จะไม่ผ่านเงียบๆexpires_in แบบ string scope แบบ array ใน token response และ Patreon connector อัปเดตเป็น Patreon API v2 เพื่อให้ sign-in กลับมาใช้งานได้Cannot find 'client' in scope (ขอบคุณ @timokoethe).logto db alteration deploy) หลังอัปเกรดและก่อนสตาร์ทรุ่นใหม่/console ไม่ตรง admin endpoint ที่ตั้งไว้ ช่วยตรวจสอบการตั้งค่าผิดของ ADMIN_ENDPOINTขอขอบคุณสมาชิกคอมมูนิตี้ที่มีผลงานใน release นี้:
deliveryId (#9882), hasPassword สำหรับสมาชิกองค์กร (#9883), ตัวกรอง organization ด้วย just-in-time provisioning domain (#9912), ตรวจสอบ key customClientMetadata (#9931), ข้อผิดพลาด social sign-in ชัดเจนขึ้น (#9879, #9880), database retry (#9881, #9928), จัดการ error ของ connector (#9849)ADMIN_ENDPOINT ไม่ตรง (#9408)พร้อมอัปเกรดหรือยัง? ดู คู่มืออัปเกรด สำหรับขั้นตอนโดยละเอียด
ดูการเปลี่ยนแปลงทั้งหมดได้ที่ GitHub release page
มีคำถามหรือข้อเสนอแนะ? มาพูดคุยใน Discord หรือเปิด issue ที่ GitHub