เราทุกคนชอบที่แอปที่มาพร้อมเครื่องจะขอให้คุณเข้าสู่ระบบเพียงครั้งเดียว แล้วจดจำคุณไว้จนกว่าคุณจะบอกว่าต้องการออกจากระบบ น่าเสียดายที่เว็บอาจ ทำงานแบบนั้นไม่ได้
ในปัจจุบันอุปกรณ์โดยเฉพาะอุปกรณ์เคลื่อนที่มีความเป็นส่วนตัวมากขึ้น และเมื่อมีเว็บไซต์จำนวนมากที่ส่งการเข้าชมทั้งหมดผ่าน HTTPS จะช่วยลดความเสี่ยงในการโจรกรรมโทเค็น เว็บไซต์ต่างๆ จึงควรพิจารณานโยบายคุกกี้ที่มีระยะเวลาสั้นๆ อีกครั้ง และนำเซสชันการใช้งานที่ยาวนานขึ้นมาใช้มากขึ้น
อย่างไรก็ตาม แม้ว่าคุณต้องการทำให้เซสชันมีระยะเวลานานขึ้น แต่บางเว็บไซต์ก็ไม่ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ในคำขอแต่ละรายการ (กล่าวคือ จะไม่มีวิธีเพิกถอนคุกกี้ของเซสชันเมื่อออกคุกกี้แล้ว) ซึ่งปกติแล้วจะนำไปสู่เซสชันสั้นๆ โดยผู้ใช้จะถูกบังคับให้ลงชื่อเข้าใช้บ่อยๆ เพื่อให้สามารถตรวจสอบการตรวจสอบสิทธิ์อีกครั้งได้ ซึ่งทำให้สามารถทำสิ่งต่างๆ เช่น การเปลี่ยนรหัสผ่าน เพื่อทำให้เซสชันที่มีอยู่เป็นโมฆะในระยะเวลาที่ทราบ
หากคุณใช้วิธีนี้ เรามีโซลูชันทางเทคนิคที่อาจช่วยคุณตรวจสอบความถูกต้องของคุกกี้การตรวจสอบสิทธิ์แบบไม่เก็บสถานะอีกครั้งโดยอัตโนมัติ ซึ่งทำงานโดยการมีโทเค็นสำรองที่ใช้ได้นานซึ่งใช้ในการรีเฟรชคุกกี้การตรวจสอบสิทธิ์ที่มีอายุสั้นที่มีอยู่ได้ การใช้ประโยชน์จากรูปแบบ Service Worker ใหม่ช่วยให้เรา "ตรวจสอบ" กับโทเค็นที่ใช้ได้นาน ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ (เช่น ตรวจสอบว่าผู้ใช้ไม่ได้เปลี่ยนรหัสผ่านเมื่อเร็วๆ นี้หรือไม่ หรือเพิกถอนเซสชัน) และออกคุกกี้การตรวจสอบสิทธิ์ที่มีอายุสั้นใหม่
ข้อเสนอที่นำไปปฏิบัติได้จริงสำหรับการย้ายข้อมูลไปยังเซสชันยาวที่ปลอดภัยบนเว็บ
จากตรงนี้ โพสต์นี้จะอธิบายเทคนิคใหม่ที่เราเสนอให้เรียกว่า 2-Cookie-Handoff (2CH) เราหวังว่าจะใช้บทความนี้เพื่อรับฟังความคิดเห็นของชุมชนว่าแนวทางนี้ดูเป็นไปในเชิงบวกหรือไม่ และหากใช่ เพื่อทำงานร่วมกับอุตสาหกรรมในการบันทึกแนวทางปฏิบัติแนะนำสำหรับการใช้ 2CH
Service Worker เป็นเทคโนโลยีใหม่ที่ได้รับการสนับสนุนในเบราว์เซอร์ต่างๆ เช่น Chrome, Firefox, Opera และที่กำลังจะเปิดตัวใน Edge ในเร็วๆ นี้ ซึ่งช่วยให้คุณสกัดกั้นคำขอของเครือข่ายทั้งหมดจากเว็บไซต์ผ่านจุดร่วมของโค้ดในไคลเอ็นต์ได้ โดยไม่ต้องแก้ไขหน้าที่มีอยู่ ซึ่งจะช่วยให้คุณตั้งค่า "ผู้ปฏิบัติงาน 2CH" สำหรับผู้ใช้ที่ลงชื่อเข้าสู่ระบบซึ่งสามารถดักจับคำขอของเครือข่ายทั้งหมดที่หน้าเว็บของคุณสร้างและดำเนินการสลับโทเค็นได้เช่นเดียวกับที่แอปบนอุปกรณ์เคลื่อนที่ทำ
ส่วนใหญ่แล้วเซิร์ฟเวอร์ของคุณจะมีปลายทางที่แอปบนอุปกรณ์เคลื่อนที่ใช้อยู่แล้ว เพื่อรับโทเค็นที่มีอายุสั้นใหม่ ซึ่งมักจะใช้โปรโตคอล OAuth หากต้องการเปิดใช้รูปแบบข้างต้นในเว็บ คุณต้องอัปเดตปลายทางนั้นให้เข้าใจว่าเมื่อใดที่ Service Worker เรียกใช้ จากนั้นส่งกลับคุกกี้เซสชันที่มีอายุการใช้งานสั้นใหม่ซึ่งมีการจัดรูปแบบในลักษณะที่หน้าอื่นๆ ในเว็บไซต์คาดไว้อยู่แล้ว
หากเซิร์ฟเวอร์ยังไม่มีปลายทางดังกล่าว เซิร์ฟเวอร์จะสร้างปลายทางเฉพาะสำหรับการจัดการเซสชันของเบราว์เซอร์ได้
![ลำดับการแฮนด์ออฟ 2 รายการ](https://developer.chrome.google.cn/static/blog/2-cookie-handoff/image/the-2-cookie-handoff-sequ-0b6ed8bf3c1d8.png?authuser=0000&hl=th)
รูปแบบ 2 โทเค็นที่มี Service Worker ติดตามรูปแบบ OAuth 2.0 ค่อนข้างคล้ายกัน หากคุณเรียกใช้ปลายทางของโทเค็น OAuth อยู่แล้ว ก็เป็นไปได้มากว่าจะใช้ซ้ำกับ Service Worker สำหรับการตรวจสอบสิทธิ์เว็บ
คุณอาจสงสัยว่าจะเกิดอะไรขึ้นหากผู้ใช้ไปที่เบราว์เซอร์ที่ไม่รองรับ Service Worker หากคุณนำวิธีการข้างต้นไปใช้ ประสบการณ์ดังกล่าว จะไม่มีความแตกต่างกันและจะได้รับเซสชันสั้นๆ ต่อไป
เราได้เผยแพร่ไคลเอ็นต์และแบ็กเอนด์ตัวอย่างแล้ว เราหวังว่าคุณจะลองใช้ด้วยตัวคุณเองและ ตอบแบบสำรวจเกี่ยวกับการจัดการเซสชัน