告別簡短的課程 - 透過服務工作人員改善網路 Cookie 管理方式的提案

William Denniss
Owen Campbell-Moore

我們都喜歡原生應用程式只要求您登入一次,然後記住您,直到您要求登出為止。很抱歉,網路並非總是如此運作。

如今,裝置 (尤其是行動裝置) 更具個人化,且越來越多網站透過 HTTPS 傳送所有流量,以降低權杖遭竊的風險,因此網站應重新考慮短效 cookie 政策,並採用更符合使用者需求的長效工作階段。

不過,即使您讓工作階段持續更久,某些網站也不會在每次要求中驗證使用者的驗證狀態 (換句話說,一旦發出工作階段 Cookie,就無法撤銷)。這通常會導致工作階段時間縮短,使用者會被迫頻繁登入,以便重新驗證其驗證資訊,並在特定時間內透過密碼變更作業,讓現有工作階段失效。

如果您採用這種方法,我們有技術解決方案可協助您自動重新驗證無狀態驗證 Cookie。這項功能會提供次要的長效權杖,可用於重新整理現有的短效驗證 Cookie。運用新的服務工作者模式,我們就能定期使用長效權杖「簽入」,驗證使用者的驗證狀態 (例如檢查使用者是否最近未變更密碼,或以其他方式撤銷工作階段),並重新發出新的短效驗證 cookie。

實用的建議:在網路上遷移至安全的長時間工作階段

本文接下來將介紹我們提出的全新技術,稱為「2 個 Cookie 轉移 (2CH)」。我們希望透過這篇文章,瞭解社群對這項做法的反應,並視情況與業界合作,記錄使用 2CH 的最佳做法。

服務工作者是一種新技術,目前已獲得多個瀏覽器的支援,包括 Chrome、Firefox、Opera,Edge 也即將支援。您可以透過用戶端的共同程式碼點,攔截網站的所有網路要求,而無須修改現有網頁。這可讓您為登入的使用者設定「2CH worker」,以便攔截網頁發出的所有網路要求,並執行與行動應用程式相同的符記交換作業。

在大多數情況下,您的伺服器都已提供行動應用程式用來取得新短期權杖的端點,通常會使用 OAuth 通訊協定。如要在網站上啟用上述模式,只需更新該端點,讓端點瞭解何時會由 Service Worker 呼叫,然後以網站上其他網頁已預期的方式,傳回新的短效時段工作階段 Cookie。

如果您的伺服器尚未有這類端點,可以建立一個專門用於瀏覽器工作階段管理的端點。

2 個 Cookie 交接序列

使用服務工作者的兩個權杖模式會大致遵循 OAuth 2.0 模式,如果您已執行 OAuth 權杖端點,則可以將其與服務工作者一併重複使用,用於網頁驗證。

您可能也想知道,如果使用者造訪不支援 Service Worker 的瀏覽器,會發生什麼情況。如果您採用上述方法,他們就不會感受到任何差異,並繼續體驗短暫的工作階段。

我們已發布用戶端和後端範例。希望您能親自試用,並回答有關工作階段管理的問卷調查