根據預設,Google 可從外部存取的帳戶服務會處理 Google 帳戶的驗證作業。如果未經驗證的使用者造訪需要驗證的 Google 頁面,Google 登入表單會要求使用者提供電子郵件地址和密碼。使用者提交電子郵件和密碼後,Google 驗證會確認輸入的憑證是否正確。如果憑證正確無誤,Google 驗證會設定使用者的登入 Cookie。
有些企業會採用更複雜的模式,由第三方識別資訊提供者 (IdP) 處理驗證作業。Google 驗證功能支援這項模型,並採用業界標準的安全宣告標記語言 (SAML) 通訊協定。管理員可以設定網域使用 SAML 驗證。
取得使用者密碼
ChromeOS 必須識別使用者在登入時輸入的密碼,才能:
- 加密儲存在磁碟機中的使用者資料。
- 保護螢幕鎖定畫面。
- 在無法連上網路時啟用離線登入功能。
使用 SAML 時,密碼不會直接在 ChromeOS 系統對話方塊中輸入,而是在身分識別提供者代管的網頁檢視區塊中輸入。雖然 ChromeOS 可以存取 HTML,但由於不清楚哪些表單欄位含有資料,因此無法以簡單的標準方式取得密碼。
使用 SAML 時,您可以透過兩種方式取得使用者密碼:憑證傳遞 API 和密碼擷取。
Chrome Credentials Passing API
Google 提供憑證傳遞 API,識別資訊提供者可以在 JavaScript 的 SAML 頁面上實作這項 API,將必要資料傳遞至 ChromeOS。Google 驗證會使用這個 API,但任何 SAML 識別資訊提供者也可以使用。
密碼擷取
如果 SAML 識別資訊提供者不支援憑證傳遞 API,可能會使用密碼擷取功能。
這個方法的步驟如下:
- 驗證畫面會將內容指令碼插入代管登入程序的 WebView。
- 內容指令碼會找出密碼類型的 HTML 輸入欄位,並將內容複製到陣列中。每當密碼欄位的內容變更時,系統就會更新這個陣列。
- 系統會將擷取的密碼傳送至背景網頁,並累積這些密碼。這樣一來,即使登入流程多次重新導向至不同的 HTML 網頁,系統仍可擷取密碼。
登入流程結束時,系統會從背景網頁擷取已擷取的密碼陣列。可能出現三種情況:未擷取到任何密碼、擷取到一個密碼,或擷取到多個密碼。
未擷取任何密碼
內容指令碼無法在身分識別提供者提供的 HTML 網頁中找到密碼。識別資訊提供者可能不會使用傳統密碼。
在這種情況下,ChromeOS 會提示使用者為裝置選擇手動密碼。如果沒有密碼 (例如透過智慧卡、NFC 或生物特徵辨識驗證),ChromeOS 驗證程序可能會在沒有密碼的情況下繼續進行。
系統只擷取到一個密碼
內容指令碼只會識別一個密碼。這很可能是使用者用於驗證的密碼。
在此情境中,我們很可能已正確擷取使用者的密碼。ChromeOS 會使用擷取的密碼做為使用者密碼,繼續驗證程序。
系統擷取到多個密碼
內容指令碼識別出多個密碼。如果身分識別供應商要求使用者在登入表單中輸入永久密碼和一次性密碼,就可能發生這種情況。
在這種情況下,我們可能會擷取使用者的實際密碼,以及 ChromeOS 不感興趣的其他密碼欄位。為判斷哪個是正確密碼,ChromeOS 會提示使用者在額外的密碼提示中再次輸入密碼。
如果輸入的密碼與其中一個遭擷取的密碼相符,表示系統已識別出使用者的實際密碼,驗證程序將繼續進行。如果沒有相符的密碼,系統會提示使用者再次輸入密碼。如果密碼不符兩次,系統就會顯示錯誤訊息,並拒絕登入。
企業註冊
如要註冊企業版,必須提供註冊使用者的電子郵件地址,才能將裝置與正確的網域建立關聯。裝置政策擷取期間,電子郵件會從裝置管理 (DM) 伺服器傳送至 Chrome,並位於 PolicyData 訊息的使用者名稱欄位。無須判斷使用者的密碼。