告別簡短的課程 - 透過服務工作人員改善網路 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 交互處理順序

Service Worker 的雙權杖模式更接近 OAuth 2.0 模式。如果您已執行 OAuth 權杖端點,則可以將其與服務工作站重複用於網路驗證。

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

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