บอกลาเซสชันสั้นๆ ไป - ข้อเสนอสำหรับการใช้โปรแกรมทำงานของบริการเพื่อปรับปรุงการจัดการคุกกี้บนเว็บ

William Denniss
โอเวน แคมป์เบล-มัวร์

เราทุกคนชอบที่แอปที่มาพร้อมเครื่องจะขอให้คุณเข้าสู่ระบบเพียงครั้งเดียว แล้วจดจำคุณไว้จนกว่าคุณจะบอกว่าต้องการออกจากระบบ น่าเสียดายที่เว็บ ไม่ได้ทำงานแบบนั้นเสมอไป

ตอนนี้อุปกรณ์ต่างๆ โดยเฉพาะอุปกรณ์เคลื่อนที่ มีความเป็นส่วนตัวมากขึ้น และเว็บไซต์จำนวนมากที่ส่งการเข้าชมทั้งหมดผ่าน HTTPS ช่วยลดความเสี่ยงในการขโมยโทเค็น เว็บไซต์ควรพิจารณานโยบายคุกกี้ที่มีอายุสั้นของตนใหม่ และนำเซสชันที่อยู่เป็นเวลานานขึ้นมาใช้

อย่างไรก็ตาม แม้ว่าคุณจะต้องการให้เซสชันมีระยะเวลานานขึ้น แต่บางเว็บไซต์ก็ไม่ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ในแต่ละคำขอ (กล่าวคือ ไม่มีวิธีเพิกถอนคุกกี้เซสชันที่เกิดขึ้น) ซึ่งโดยปกติจะนำไปสู่เซสชันสั้นๆ ที่ผู้ใช้ถูกบังคับให้ลงชื่อเข้าใช้บ่อยๆ เพื่อให้สามารถตรวจสอบการตรวจสอบสิทธิ์อีกครั้ง ทำให้มีการดำเนินการต่างๆ เช่น การเปลี่ยนรหัสผ่าน เพื่อทำให้เซสชันที่มีอยู่ถูกยกเลิกตามระยะเวลาที่ทราบ

หากนี่เป็นวิธีที่คุณใช้ เรามีโซลูชันทางเทคนิคที่อาจช่วยให้คุณตรวจสอบคุกกี้การตรวจสอบสิทธิ์แบบไม่เก็บสถานะได้อีกครั้งโดยอัตโนมัติ เครื่องมือนี้จะทำงานโดยมีโทเค็นรองที่ใช้ได้นานซึ่งสามารถใช้เพื่อรีเฟรชคุกกี้การตรวจสอบสิทธิ์ที่มีอายุสั้นที่มีอยู่ได้ การใช้ประโยชน์จากรูปแบบ Service Worker ใหม่ทำให้เรา "เช็คอิน" ด้วยโทเค็นที่ใช้ได้นานเป็นประจำ ยืนยันการตรวจสอบสิทธิ์ของผู้ใช้ (เช่น ตรวจสอบว่าผู้ใช้ไม่ได้เปลี่ยนรหัสผ่านเมื่อเร็วๆ นี้ หรือยกเลิกเซสชันหรือไม่) และออกคุกกี้การตรวจสอบสิทธิ์ใหม่เป็นระยะเวลาสั้นๆ อีกครั้ง

ข้อเสนอที่นำไปปฏิบัติได้จริงสำหรับการเปลี่ยนไปใช้เซสชันที่ยาวนานอย่างปลอดภัยบนเว็บ

จากตรงนี้ โพสต์นี้จะอธิบายเทคนิคใหม่ที่เรานำเสนอซึ่งเราเรียกว่า 2-Cookie-Handoff (2CH) เราหวังว่าจะได้นำบทความนี้ไปใช้เพื่อรับฟังความคิดเห็นของชุมชนว่าแนวทางนี้น่าจะเป็นไปในเชิงบวกหรือไม่ และหากใช่ เพื่อจะได้ทำงานกับอุตสาหกรรมในการจัดทำเอกสารแนวทางปฏิบัติแนะนำสำหรับการใช้ 2CH

โปรแกรมทำงานของบริการเป็นเทคโนโลยีใหม่ที่เบราว์เซอร์ต่างๆ รองรับ เช่น Chrome, Firefox, Opera และ Edge ที่จะเพิ่มเข้ามาในเร็วๆ นี้ ซึ่งช่วยให้คุณสกัดกั้นคำขอทั้งหมดของเครือข่ายจากเว็บไซต์ของคุณผ่านจุดโค้ดทั่วไปในไคลเอ็นต์ โดยไม่ต้องแก้ไขหน้าที่มีอยู่ ซึ่งทำให้คุณสามารถตั้งค่า "ผู้ปฏิบัติงาน 2CH" สำหรับผู้ใช้ที่ลงชื่อเข้าสู่ระบบ ซึ่งสามารถสกัดกั้นคำขอของเครือข่ายทั้งหมดที่หน้าเว็บของคุณสร้าง และดำเนินการสลับโทเค็นเช่นเดียวกับแอปบนอุปกรณ์เคลื่อนที่

ส่วนใหญ่แล้วเซิร์ฟเวอร์จะใช้ปลายทางโดยแอปบนอุปกรณ์เคลื่อนที่ในการรับโทเค็นใหม่ที่มีอายุสั้น โดยปกติจะใช้โปรโตคอล OAuth หากต้องการเปิดใช้รูปแบบข้างต้นบนเว็บ คุณต้องอัปเดตปลายทางนั้นให้เข้าใจว่าเมื่อใดที่ Service Worker เรียกใช้ แล้วแสดงผลคุกกี้เซสชันใหม่ที่มีอายุสั้นซึ่งจัดรูปแบบในลักษณะที่หน้าอื่นๆ ในเว็บไซต์นั้นคาดหมายอยู่แล้ว

หากเซิร์ฟเวอร์ยังไม่มีปลายทางดังกล่าว คุณสามารถสร้างปลายทางเฉพาะสำหรับการจัดการเซสชันของเบราว์เซอร์ได้

ลำดับการส่งต่อคุกกี้ 2 รายการ

รูปแบบ 2 โทเค็นที่มี Service Worker เป็นไปตามรูปแบบ OAuth 2.0 ค่อนข้างใกล้เคียง ถ้าคุณเรียกใช้ปลายทางโทเค็น OAuth แล้ว คุณอาจนำปลายทางนี้กลับมาใช้ซ้ำกับ Service Worker สำหรับการตรวจสอบสิทธิ์เว็บได้

คุณอาจสงสัยว่าจะเกิดอะไรขึ้นถ้าผู้ใช้เปิดเบราว์เซอร์ที่ไม่รองรับโปรแกรมทำงานของบริการ ถ้าทำตามวิธีการข้างต้น ก็จะไม่รู้สึกถึงความแตกต่างแต่อย่างใด และจะได้รับเซสชันสั้นๆ ต่อไป

เราได้เผยแพร่ตัวอย่างไคลเอ็นต์และแบ็กเอนด์แล้ว เราหวังว่าคุณจะลองใช้งานและตอบแบบสำรวจเกี่ยวกับการจัดการเซสชัน