個案研究

Uber 如何運用 Restore Credentials API,每年減少 400 萬次手動登入次數

5 分鐘閱讀
Niharika Arora
開發人員關係工程師

Uber 是全球最大的共乘公司,為數百萬人提供交通運輸服務,同時也支援外送、醫療運輸和貨運物流。簡便的存取方式是這項功能成功的關鍵。使用者換用新裝置時,希望能夠順暢轉移,不必重新登入 Uber 應用程式,也不必透過簡訊驗證動態密碼。裝置更換頻率高既是挑戰,也是留住使用者的好機會。

為確保使用者體驗不中斷,Uber 工程師採用了「還原憑證」功能。在美國,每年有 40% 的人會更換智慧型手機,因此這項工具非常重要。評估使用者需求並完成程式碼原型設計後,Uber 團隊在 Uber 乘客應用程式中導入「還原憑證」功能。為驗證還原憑證功能有助於減少重新登入時的阻礙,Uber 團隊進行了為期五週的 A/B 實驗,結果顯示這項功能確實有效。整合後,手動登入次數減少,以 Uber 的龐大使用者群為基準估算,每年可減少 400 萬次手動登入。

使用「還原憑證」功能,減少登入阻力

restore-credentials.gif

過去曾嘗試在新裝置上使用一般資料備份BlockStore 等解決方案還原帳戶,但這兩種解決方案都必須直接從來源裝置分享驗證權杖到目標裝置。由於權杖資訊非常敏感,因此這些解決方案只會用於預先填寫目標裝置上的登入欄位,並減少登入流程中的部分阻礙。密碼金鑰也可用於提供安全快速的登入方式,但由於密碼金鑰是由使用者啟動,因此對裝置無縫轉移的影響有限。

Uber Android 工程師 Thomás Oliveira Horta 表示:「部分使用者不會每天使用 Uber 應用程式,但他們希望在需要時能順利使用。」在新的 Android 手機上開啟應用程式準備叫車時,才發現自己已登出,這可能會帶來不愉快的體驗,讓人感到反感。

有了「還原憑證」,工程師就能彌補這個落差。API 會在舊裝置上產生專屬權杖,使用者在標準新手上路程序中還原應用程式資料時,權杖會順暢無縫地移至新裝置。這項程序會運用 Android OS 的原生備份和還原機制,確保還原金鑰和應用程式資料能安全轉移。簡化程序可確保帳戶轉移簡單又安全,符合 Uber 的安全規定,且不需要額外的使用者輸入內容或開發成本。

注意:還原金鑰和密碼金鑰使用相同的基礎伺服器實作方式。不過,將這些值儲存到資料庫時,必須加以區別。這項區別非常重要,因為使用者建立的密碼金鑰可由使用者直接管理,而還原金鑰則由系統管理,且不會顯示在使用者介面中。

Thomás 表示:「Uber 乘客應用程式採用『還原憑證』後,我們開始看到持續的使用情況。在目前的推出階段,平均每天有 10,000 名不重複使用者透過『還原憑證』登入,且在新裝置上首次開啟應用程式時,享有流暢的體驗。我們預計向全體使用者推出這項功能後,這個數字會增加一倍。」

image_thomas2.png

導入注意事項

Thomás 表示:「只要按照程式碼範例說明文件,在 Android 端稍做調整,即可輕鬆完成整合。「我們的應用程式已使用 Credential Manager 處理密碼金鑰,後端只需要進行幾項小調整。因此,我們只需要將 Credential Manager 依附元件更新至最新版本,即可存取新的 Restore Credentials API。我們透過相同的密碼金鑰建立流程建立還原金鑰,當應用程式在新裝置上啟動時,應用程式會嘗試以無聲方式擷取密碼金鑰,主動檢查是否有這組金鑰。如果找到還原金鑰,系統會立即使用該金鑰自動登入使用者,略過任何手動登入程序。」

在開發過程中,Uber 工程師在實作時遇到了一些挑戰,包括選擇合適的進入點,以及管理後端的憑證生命週期。

選擇「還原憑證」進入點

工程師在選擇用於復原的「還原憑證」 進入點時,仔細權衡了完美無縫的使用者體驗與實作簡便性之間的取捨。最終,他們優先採用了能達到理想平衡的解決方案。

「這項作業可能會在應用程式啟動時進行,也可能在裝置還原和設定期間,透過 BackupAgent 在背景執行。」Thomás 說道。「背景登入進入點對使用者來說更順暢,但背景作業會帶來挑戰,且需要使用 BackupAgent API,這會導致 Uber 這麼大的程式碼集變得更加複雜。」他們決定在首次啟動應用程式時實作這項功能,這比手動登入快得多。

解決伺服器端挑戰

整合後端 WebAuthn API 時,我們遇到了一些伺服器端挑戰,因為這些 API 的設計假設一律需要使用者驗證,且所有憑證都會列在使用者帳戶設定中;這兩項假設都不適用於非使用者管理的憑證還原金鑰。

Uber 團隊對 WebAuthn 服務進行微幅變更,並建立新的憑證類型,以區分密碼金鑰和還原憑證,然後適當處理,解決了這個問題。

管理還原憑證生命週期

Uber 工程師在管理後端憑證金鑰時面臨多項挑戰,後端工程師 Ryan O’Laughlin 提供專業支援:

  • 防止孤立金鑰:定義刪除已註冊公開金鑰的策略,防止金鑰「孤立」,是相當大的挑戰。舉例來說,解除安裝應用程式會刪除本機憑證,但由於這項動作不會向後端發出信號,因此伺服器上會留下未使用的金鑰。
  • 平衡金鑰生命週期:金鑰需要足夠長的存留時間,才能處理極端情況。舉例來說,如果使用者進行備份及還原作業,然後手動登出舊裝置,系統就會從舊裝置刪除金鑰。不過,金鑰在伺服器上必須保持有效,新裝置才能繼續使用。
  • 支援多部裝置:使用者可能擁有多部裝置,並可從任何裝置啟動備份及還原作業,因此後端需要支援每個使用者的多個還原憑證 (每部裝置一個)。

Uber 工程師根據新憑證註冊和憑證使用情況,建立伺服器端金鑰刪除規則,解決了這些挑戰。

這項功能從設計到推出,只花了兩個月就完成開發和測試程序。隨後,為期五週的 A/B 實驗 (向使用者驗證功能的時間) 順利進行,並產生無可否認的結果。 

使用「還原憑證」功能防止使用者流失

Uber 讓使用者不必在新裝置上進行手動登入,因此留住了可能放棄在新裝置上登入程序的使用者。這項改善措施讓顧客使用起來更加輕鬆,並帶來許多好處。雖然乍看之下可能不明顯,但以 Uber 的使用者族群規模來說,影響相當巨大:

  • 手動登入 (簡訊 OTP、密碼、社群帳號登入) 次數減少 3.4%。
  • 如果登入時需要簡訊 OTP,費用可減少 1.2%。
  • Uber 的存取率提高 0.575% (成功連上應用程式主畫面的裝置百分比)。
  • 完成行程的裝置數量增加 0.614%。

如今,「還原憑證」功能已成為 Uber 乘客應用程式的標準功能,試用群組中已有超過 95% 的使用者完成註冊。

uber-devices.png

設定新裝置時,使用者可以從備份還原應用程式資料和憑證。選取 Uber 進行還原,並完成背景程序後,應用程式會在使用者首次啟動新裝置時自動登入。

image_thomas.png

「還原憑證」功能帶來的巨大影響

Uber 預計在未來幾個月內擴大整合「還原憑證」功能,根據試驗結果,他們預估這項變更每年可減少 400 萬次手動登入。簡化應用程式存取方式並解決主要痛點後,他們積極培養出更滿意且忠實的客群,每次搭乘都能提升顧客滿意度。

Uber 核心身分識別產品管理主管 Matt Mueller 表示:「整合 Google 的 RestoreCredentials 後,我們就能提供使用者期待的『開箱即用』體驗,讓他們在新裝置上順暢登入。」「這直接轉化為可衡量的收益增幅,證明減少登入障礙是提升使用者參與度和留存率的關鍵。」

準備好提升應用程式的登入體驗了嗎?

瞭解如何使用還原憑證,在切換裝置時提供順暢的登入體驗,詳情請參閱網誌文章。在最新 Canary 版的 Android Studio Otter 中,您可以驗證整合作業,因為新功能有助於模擬備份和還原機制。

如果您是 Credential Manager 新手,請參閱官方說明文件程式碼研究室範例,瞭解如何整合

撰寫者:

繼續閱讀