Logto v1.41.0 เป็นเวอร์ชันที่เน้นการควบคุมและความปลอดภัย มันมอบวิธีเลือกผู้มีสิทธิ์เข้าถึงแต่ละแอปที่ละเอียดมากขึ้น ควบคุมวงจรรหัสผ่านได้สมบูรณ์กว่าเดิม และ Account Center ที่ทรงพลังยิ่งขึ้นสำหรับผู้ใช้ปลายทาง นอกจากนี้ยังรัดกุมยิ่งขึ้นในเรื่องการส่งรหัสยืนยัน กฎชื่อผู้ใช้ การจัดการ SAML/OIDC การป้องกันการใช้ MFA ซ้ำ และเส้นทางอัปเกรดสำหรับการโฮสต์เอง นี่คือสิ่งใหม่ ๆ ที่เพิ่มเข้ามา
การควบคุมการเข้าถึงในระดับแอป#
ตอนนี้คุณสามารถจำกัดการเข้าถึงแอปพลิเคชันได้โดยตรงจาก Logto กฎการเข้าถึงสามารถกำหนดเป้าหมายเป็นผู้ใช้เฉพาะ บทบาทผู้ใช้ องค์กร หรือบทบาทขององค์กร
เมื่อผู้ใช้ไม่ตรงตามกฎที่กำหนดไว้ Logto จะบล็อกการลงชื่อเข้าใช้หรือการเข้าถึงแอปด้วยหน้าการปฏิเสธสิทธิ์การเข้าถึง แทนที่จะปล่อยให้คำขอผ่านไป ช่วยให้การเปิดตัวแอป จำกัดการเข้าถึงลูกค้า ปกป้องเครื่องมือภายใน และควบคุมการใช้งานตามขอบเขตองค์กรเป็นเรื่องง่ายขึ้น โดยไม่ต้องผลักภาระการตัดสินใจทั้งหมดไปยังโค้ดของแอปพลิเคชันของคุณ
ดู เอกสารการควบคุมการเข้าถึงในระดับแอป สำหรับขั้นตอนการตั้งค่าฉบับเต็ม
นโยบายการหมดอายุรหัสผ่าน#
Console ตอนนี้รองรับการตั้งค่าอายุรหัสผ่านของผู้เช่าได้ที่ Security > Password policy
แอดมินสามารถเปิดใช้การหมดอายุของรหัสผ่าน กำหนดจำนวนวันที่รหัสผ่านจะคงอยู่ได้ และหมดอายุรหัสผ่านของผู้ใช้รายบุคคลได้จากหน้า ข้อมูลผู้ใช้ เมื่อรหัสผ่านหมดอายุ ผู้ใช้จะต้องรีเซ็ตรหัสผ่านผ่านวิธีการกู้คืนที่กำหนดไว้ก่อนจึงจะสามารถลงชื่อเข้าใช้ด้วยรหัสผ่านต่อได้
SSO และการลงชื่อเข้าใช้ด้วย passkey จะไม่ได้รับผลกระทบ ผู้ใช้ที่มีอยู่ซึ่งยังไม่มีการบันทึกเวลาที่เปลี่ยนรหัสผ่าน Logto จะกำหนด anchor ในเวลาที่นโยบายนี้เปิดใช้งาน เพื่อให้ได้ช่วงเวลามีผลเต็ม ไม่หมดอายุทันที
Account Center ได้เครื่องมือบริหารสิทธิ์ตัวเองมากขึ้น#
Account Center พัฒนาต่อเนื่องเพื่อเป็นศูนย์จัดการตัวตนแบบ self-service สำหรับผู้ใช้ปลายทาง
เวอร์ชันนี้เพิ่มการจัดการเซสชัน ตรวจสอบแอปพลิเคชันภายนอกที่เชื่อมต่อ จัดการโปรไฟล์ อัปโหลด avatar อัปโหลด avatar ระหว่างสมัครสมาชิกผ่าน collect-profile ควบคุม passkey อย่างอิสระ และตัวเลือกสำหรับผู้ใช้สำหรับการแจ้งเตือนลงชื่อเข้าใช้ด้วย passkey
หน้าโปรไฟล์ของ Account Center, ฟิลด์โปรไฟล์ที่กำหนดเองขณะสมัคร และ endpoint อัปโหลด avatar ได้รับการเปิดใช้งานออกจาก dev feature gate แล้วด้วย
มีการแก้ไขสำคัญอีกหลายจุด ได้แก่
- ธีม แพลตฟอร์ม และสีแบรนด์ถูกนำมาใช้ก่อน hydration เพื่อลดอาการวูบวาบภาพ
- Step-up verification จำกัดการใช้งานกับบันทึกการตรวจสอบสิทธิ์ของผู้ใช้เท่านั้น
- ผูกบัญชีโซเชียลได้โดยไม่ต้องยืนยันรหัสผ่าน อีเมล หรือโทรศัพท์ในกรณีที่ผู้ใช้ไม่มีวิธีการยืนยันแบบเดิม
- ตอนนี้การแก้ไขชื่อผู้ใช้ใน Console จะนำไปที่ Account Center เพื่อให้สามารถทำขั้นตอนการตรวจสอบที่ต้องการให้สมบูรณ์
นโยบายชื่อผู้ใช้และรหัสยืนยัน#
ตอนนี้สามารถตั้งค่ากฎชื่อผู้ใช้ในระดับ tenant ได้ที่ Console > Sign-in experience > Sign-up and sign-in > Advanced options
นโยบายครอบคลุมความไวต่อเคส ความยาวที่อนุญาต และชนิดอักขระที่อนุญาต ซึ่งจะถูกบังคับใช้ในทุกจุดที่ผู้ใช้ปลายทางเขียนชื่อผู้ใช้ รวมถึงสมัครสมาชิก เติมข้อมูลโปรไฟล์ Account Center Account API และ /me
การเปลี่ยนเป็นชื่อผู้ใช้ case-insensitive มีการป้องกัน Logto จะตรวจสอบชื่อผู้ใช้ซ้ำแบบต่างเคส แล้วบล็อกการเปลี่ยนนโยบายจนกว่าจะแก้ความขัดแย้งเสร็จ ค่า preferred_username ใน OIDC จะ fallback ไปที่ username ถ้า profile.preferredUsername ไม่ได้ตั้งไว้แล้ว
การควบคุมรหัสยืนยันก็ถูกย้ายเข้า Console Security Settings เช่นกัน แอดมินสามารถตั้งระยะเวลาหมดอายุรหัสและจำนวนครั้งที่พยายามได้
การส่งข้อความที่ปลอดภัยยิ่งขึ้น#
ตอนนี้ Logto ใช้อัตราขีดจำกัดการส่งต่อผู้รับแต่ละรายในระดับระบบ สำหรับอีเมล/SMS ยืนยันตัวตนและเส้นทางส่งคำเชิญ รวมถึง Experience, MFA, Account API, Management API, /me, คำเชิญองค์กร และ API ปฏิสัมพันธ์เวอร์ชันเก่า
เมื่อการส่งถูกจำกัด Logto จะส่งเหตุการณ์ webhook Message.RateLimited ซึ่งสามารถเลือกได้ใน Console webhook setting แล้ว
การส่งรหัสยืนยันไปยังผู้รับที่ไม่รู้จักจะไม่ถูกกระตุ้นเมื่อปิดการลงทะเบียนด้วย เพื่อลดความเสี่ยงการสแกนบัญชี
JWT customizer และการปรับปรุง API#
สำหรับ organization API resource tokens ตัวปรับแต่ง JWT ของ access token จะได้ข้อมูล context.organization ซึ่งมี id, name, description และ customData ขององค์กรเป้าหมาย
ทำให้เพิ่ม claim ตามองค์กรได้ง่ายกว่าเดิมโดยไม่ฝังทุก mapping ในทุก token
ยังมีการปรับปรุง API เพิ่มเติมอีก เช่น:
POST /api/applications/:applicationId/roles กลายเป็น idempotent แล้ว ID ที่มีอยู่จะถูกข้าม ไม่คืน 422 application.role_exists
- endpoint นี้จะคืนค่า
201 พร้อม { roleIds, addedRoleIds } ตามแบบ API มอบหมายบทบาทของผู้ใช้
- การสร้างบทบาทองค์กรพร้อม scope แรกจะเป็นธุรกรรม หาก scope id ไม่ถูกต้อง จะไม่ทิ้งบทบาทค้างคาไว้
เสริมความแข็งแกร่งด้านความปลอดภัยและโปรโตคอล#
เวอร์ชันนี้มาพร้อมการแก้ไขเรื่องโปรโตคอลและความปลอดภัยที่มุ่งเป้า ได้แก่
- SAML IdP auto-submit form จะ escape ค่าแอตทริบิวต์ HTML และปฏิเสธ action URL ที่ไม่ใช่ HTTP(S)
- อัปเกรด
samlify เป็น ^2.13.0 เพื่อ escape XML ใน SAML assertions ที่สร้างได้ดีขึ้น
- การยืนยัน TOTP MFA ปฏิเสธโค้ดที่ใช้ซ้ำจาก counter เดิมหรือเก่ากว่า
- ร่างคำขอ OIDC ที่มี null byte จะคืน
400 invalid_request
- payload บันทึก audit จะตัด null byte ทิ้งก่อนบันทึก
- Blocklist email subaddress ไม่สร้าง regular expression จากข้อมูลผู้ใช้
- Logto Tunnel ป้องกันการอ่านไฟล์ static นอกเส้นทางที่กำหนดใน experience
ยังแก้ไขความเข้ากันได้และ storage เช่น Safari เก่าและ iOS 15 จะไม่แครชตอนเริ่มต้นเพราะ regex lookbehind, ตัวเชื่อมต่อ OIDC ชนิด enterprise สามารถดึงการตั้งค่า discovery จากผู้ให้บริการที่ปฏิเสธ negotiation JSON-only response ได้ และการขนส่ง asset UI จาก Azure Blob จะแมปเป็น storage download error ที่ retry ได้เมื่อถึงจุดล้มเหลว
ตัวเชื่อมต่อใหม่และปรับปรุง#
เวอร์ชันนี้เพิ่มและปรับปรุงความสามารถเกี่ยวกับ connector เช่น:
- เพิ่ม SMTP2GO สำหรับส่งอีเมลยืนยันธุรกรรมผ่าน SMTP2GO send API
- ตัวเชื่อมต่อ QQ สำหรับยืนยันตัวตนโซเชียลพร้อมจัดเก็บ redirect URI
- อัปเกรด SAML connector ให้รองรับ
samlify และ stricter type
- Connector Kit ส่งออกยูทิลิตี้แยก/pad กล่องจดหมาย SMTP ใช้ซ้ำกับ MailJunky
สำหรับผู้ใช้ที่โฮสต์เอง#
จำเป็นต้องเปลี่ยนแปลงฐานข้อมูลสำหรับ v1.41.0 โดยเวอร์ชันนี้ส่งสคีมาสำหรับหมดอายุรหัสผ่าน นโยบายชื่อผู้ใช้ นโยบายรหัสยืนยัน ดัชนีข้อความ Account Center defaults และดัชนี service-log
หลังอัปเกรดแล้วให้รันคำสั่งปรับฐานข้อมูลก่อนเปิดใช้งานเวอร์ชันใหม่ ดู คู่มืออัปเกรด สำหรับรายละเอียด
ตัวแปรแวดล้อม CASE_SENSITIVE_USERNAME เลิกใช้แล้ว ยังคง override ได้ใน runtime แต่ความไวเคสของชื่อผู้ใช้ควรตั้งค่าตาม tenant ผ่านนโยบายชื่อผู้ใช้ใหม่ ตัวแปรนี้จะถูกลบออกในเวอร์ชันหลักถัดไป
เริ่มต้นใช้งาน#
พร้อมอัปเกรดแล้วหรือยัง? ดู คู่มืออัปเกรด สำหรับขั้นตอนอย่างละเอียด
ดูการเปลี่ยนแปลงทั้งหมดใน GitHub release page
มีคำถามหรือข้อเสนอแนะ? มาร่วมพูดคุยกับพวกเราได้ที่ Discord หรือแจ้งปัญหาที่ GitHub