เราทุกคนชอบที่แอปเนทีฟจะขอให้คุณเข้าสู่ระบบเพียงครั้งเดียว แล้วจดจำคุณไว้จนกว่าคุณจะบอกให้ออกจากระบบ แต่น่าเสียดายที่เว็บไม่ได้ทำงานแบบนั้นเสมอไป
เมื่ออุปกรณ์ต่างๆ โดยเฉพาะอุปกรณ์เคลื่อนที่มีความเป็นส่วนตัวมากขึ้น และเว็บไซต์จำนวนมากขึ้นส่งการเข้าชมทั้งหมดผ่าน HTTPS เพื่อลดความเสี่ยงในการโจรกรรมโทเค็น เว็บไซต์ต่างๆ ควรพิจารณานโยบายคุกกี้ที่มีอายุสั้นอีกครั้งและใช้เซสชันที่มีอายุการใช้งานนานขึ้นซึ่งใช้งานง่ายกว่า
อย่างไรก็ตาม แม้ว่าคุณจะต้องการทำให้เซสชันใช้งานได้นานขึ้น แต่เว็บไซต์บางแห่งก็ไม่ได้ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ในแต่ละคำขอ (กล่าวคือ ไม่มีวิธีเพิกถอนคุกกี้เซสชันเมื่อออกแล้ว) ซึ่งปกติแล้วจะทำให้เซสชันสั้นลง และบังคับให้ผู้ใช้ลงชื่อเข้าใช้บ่อยครั้งเพื่อให้ระบบตรวจสอบสิทธิ์อีกครั้ง ซึ่งทำให้การดำเนินการต่างๆ เช่น การเปลี่ยนรหัสผ่าน ทำให้เซสชันที่มีอยู่ใช้งานไม่ได้ภายในระยะเวลาที่ทราบ
หากคุณใช้แนวทางนี้ เรามีโซลูชันทางเทคนิคที่อาจช่วยคุณตรวจสอบคุกกี้การตรวจสอบสิทธิ์แบบไม่มีสถานะอีกครั้งโดยอัตโนมัติ โดยทำงานโดยให้มีโทเค็นรองที่ใช้ได้นานซึ่งสามารถใช้รีเฟรชคุกกี้การตรวจสอบสิทธิ์ที่มีอยู่แล้วซึ่งใช้งานได้ในระยะสั้น การใช้รูปแบบ Service Worker ใหม่ช่วยให้เรา "ตรวจสอบ" โทเค็นที่มีอายุการใช้งานยาวเป็นประจำ ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ (เช่น ตรวจสอบว่าผู้ใช้ไม่ได้เปลี่ยนรหัสผ่านหรือเพิกถอนเซสชันไปเมื่อเร็วๆ นี้หรือไม่) และออกคุกกี้การตรวจสอบสิทธิ์ใหม่ที่มีอายุการใช้งานสั้นๆ อีกครั้ง
ข้อเสนอที่ใช้งานได้จริงสำหรับการเปลี่ยนไปใช้เซสชันที่ยาวและปลอดภัยบนเว็บ
จากนี้ไป โพสต์นี้จะอธิบายเทคนิคใหม่ที่เราจะเสนอซึ่งเรียกว่า 2-Cookie-Handoff (2CH) เราหวังว่าบทความนี้จะใช้เป็นช่องทางรับฟังความคิดเห็นจากชุมชนว่าแนวทางนี้ส่งผลดีต่อชุมชนหรือไม่ และหากส่งผลดี เราจะได้ร่วมมือกับอุตสาหกรรมในการจัดทำเอกสารแนวทางปฏิบัติแนะนำในการใช้ 2CH
Service Worker เป็นเทคโนโลยีใหม่ที่เบราว์เซอร์หลายตัวรองรับ เช่น Chrome, Firefox, Opera และเร็วๆ นี้จะรองรับใน Edge ด้วย ซึ่งช่วยให้คุณขัดขวางคําขอเครือข่ายทั้งหมดจากเว็บไซต์ผ่านจุดโค้ดทั่วไปในไคลเอ็นต์ได้โดยไม่ต้องแก้ไขหน้าเว็บที่มีอยู่ ซึ่งจะช่วยให้คุณตั้งค่า "2CH worker" สําหรับผู้ใช้ที่เข้าสู่ระบบได้ ซึ่งสามารถขัดขวางคําขอเครือข่ายทั้งหมดที่หน้าเว็บของคุณส่งและทำการแลกเปลี่ยนโทเค็นได้เช่นเดียวกับแอปบนอุปกรณ์เคลื่อนที่
บ่อยครั้งเซิร์ฟเวอร์ของคุณจะมีปลายทางที่แอปบนอุปกรณ์เคลื่อนที่ใช้รับโทเค็นใหม่ที่มีอายุสั้น โดยปกติจะใช้โปรโตคอล OAuth หากต้องการเปิดใช้รูปแบบข้างต้นบนเว็บ เพียงอัปเดตปลายทางดังกล่าวให้เข้าใจเมื่อ Service Worker เรียกใช้ จากนั้นแสดงคุกกี้เซสชันใหม่ที่มีระยะเวลาสั้นๆ ซึ่งจัดรูปแบบในลักษณะที่หน้าอื่นๆ ในเว็บไซต์คาดหวังอยู่แล้ว
หากเซิร์ฟเวอร์ไม่มีปลายทางดังกล่าว ก็สามารถสร้างปลายทางขึ้นมาเพื่อการจัดการเซสชันเบราว์เซอร์โดยเฉพาะ
รูปแบบโทเค็น 2 รายการที่มี Service Worker เป็นไปตามรูปแบบ OAuth 2.0 อย่างใกล้ชิด หากใช้ปลายทางโทเค็น OAuth อยู่แล้ว คุณก็อาจนํามาใช้ซ้ำกับ Service Worker สําหรับการตรวจสอบสิทธิ์บนเว็บได้
นอกจากนี้ คุณอาจสงสัยว่าจะเกิดอะไรขึ้นหากผู้ใช้เข้าชมเบราว์เซอร์ที่ไม่รองรับ Service Worker หากคุณใช้แนวทางข้างต้น ผู้ใช้จะไม่เห็นความแตกต่างใดๆ และยังคงใช้งานเซสชันสั้นๆ ต่อไป
เราได้เผยแพร่ไคลเอ็นต์และแบ็กเอนด์ตัวอย่าง เราหวังว่าคุณจะลองใช้ด้วยตนเองและตอบแบบสํารวจเกี่ยวกับการจัดการเซสชัน