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

William Denniss
Owen Campbell-Moore

我們都喜歡原生應用程式要求您登入一次的機制,並在您指示他們登出前提醒您。遺憾的是,網路有時不見得能這麼正常運作

如今,裝置 (特別是行動裝置) 更貼近個人需求,且透過 HTTPS 傳送所有流量的網站可降低憑證遭竊的風險,因此網站應該重新考慮使用短期 Cookie 政策,並採用更易於使用的長期工作階段。

不過,即使您「想要」延長工作階段的持續時間,某些網站也不會在每次要求時驗證使用者的驗證 (換句話說,在工作階段 Cookie 發出後就無法撤銷其要求)。這通常會產生短時間的工作階段,系統要求使用者經常登入,以便重新驗證使用者的驗證狀態,這樣開發人員就能在已知時間內將現有工作階段失效,例如更改密碼。

如果您採用這種方法,我們的技術解決方案也許可以幫助您自動重新驗證無狀態驗證 Cookie。運作方式是擁有次要長期憑證,可用於重新整理現有的短期驗證 Cookie。透過新的 Service Worker 模式,我們可定期使用長期使用中的權杖「簽入」、驗證使用者的驗證 (例如檢查使用者最近是否沒有變更密碼,或以其他方式撤銷工作階段),並重新發出新的短期驗證 Cookie。

實用提案:遷移至安全的長時間上網環境

本文將介紹我們提議的新技術,也就是 2-Cookie-Handoff (2CH)。我們希望透過本文聆聽社群意見回饋,瞭解這種方法是否正面,以及與業界合作記錄使用 2CH 的最佳做法。

Service Worker 是一項新技術,由 Chrome、Firefox、Opera 等多種瀏覽器支援,不久後即將支援 Edge。透過用戶端上的常見程式碼,攔截來自網站的所有網路要求,而不用修改現有網頁。這樣一來,您就可以為已登入的使用者設定「2CH 工作站」,以便攔截網頁提出的所有網路要求,並執行和行動應用程式一樣執行權杖替換作業。

在您的伺服器多數時間中,行動應用程式會使用端點來取得新的短期權杖,通常是使用 OAuth 通訊協定。如要在網路上啟用上述模式,只需更新該端點即可瞭解 Service Worker 何時會呼叫該端點,然後以網站上其他網頁所預期的方式傳回新的短期工作階段 Cookie。

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

2 個 Cookie 處理序列

具有服務工作站的兩個權杖模式非常接近 OAuth 2.0 模式,如果您已經執行 OAuth 權杖端點,則有可能將該端點與 Service Worker 重複使用,進行網路驗證。

您可能想知道,如果使用者造訪不支援服務工作處理程序的瀏覽器,會發生什麼情況。如果您實作上述方法,這些程序就會沒有任何差異,而且會繼續遇到短工作階段。

我們已發布範例用戶端和後端。希望您親自體驗一下,並填寫工作階段管理問卷調查