從 Chrome 128 開始,多重 IdP API 將在電腦上進行來源試用,按鈕模式 API 和續傳套件則會在 Android 上進行來源試用。開發人員可透過多重 IdP 功能,在單一 get() 呼叫中指定多個支援的識別資訊提供者陣列。按鈕模式 API 新增了使用者介面。透過按鈕模式 API,身分識別提供者即使在 API 呼叫時,使用者沒有有效的 IdP 工作階段,也能使用 FedCM API。延續套件包含延續 API 和參數 API,可提供類似 OAuth 授權流程的體驗,其中包含 IdP 提供的權限對話方塊。這個套裝組合也包含其他變更,例如 Fields API、多個 configURL 和自訂帳戶標籤。
來源試用:多重 IdP API
這項功能可讓使用者從一組支援的 IdP 中選擇帳戶,RP 則可提高登入和註冊率。如果使用者透過多個 IdP 登入,系統會提示他們使用其中一個 IdP 登入 RP。
系統會根據使用者現有帳戶和相關聯的時間戳記,決定 IdP 的優先順序。
- 如果使用者先前已透過特定 IdP 登入 RP (即「回訪帳戶」),這些 IdP 會優先列出。
- 在傳回的帳戶中,系統會根據最近一次使用 IdP 的時間戳記排序,最近使用的 IdP 會顯示在清單頂端。在某些情況下,Chrome 可能沒有回訪帳戶的時間戳記資料。這可能是因為使用者在 FedCM 實作時間戳記記錄之前登入。這些帳戶會列在有時間戳記的帳戶下方。
- 如果使用者沒有任何 IdP 的回訪帳戶,系統會遵守 RP 提供的順序。
如果開發人員提出要求,且只有一個回訪帳戶,FedCM 就能自動重新驗證。如果是多個 IdP,如果多個 IdP 都有回訪帳戶,系統不會自動重新驗證使用者身分。自動重新驗證功能需要有回訪帳戶。只有在瀏覽器明確辨識出帳戶時,才會啟動自動重新驗證。這表示使用者先前必須在這個 RP 上,透過這個特定帳戶使用 FedCM。
如果使用者的 IdP 登入狀態設為登出,呼叫 FedCM 時就不會擷取該 IdP 的帳戶。同樣地,如果使用者在所有可用的 IdP 中都處於登出狀態,系統就不會在小工具模式中自動顯示 FedCM 登入提示。
如果瀏覽器中儲存的 IdP 登入狀態為「已登入」,但擷取要求未傳回這個 IdP 的任何帳戶 (例如使用者工作階段已過期,但瀏覽器尚未更新登入狀態),系統會顯示 IdP 不符的 UI,建議使用者透過不符的 IdP 登入。
如要進一步瞭解登入狀態,請參閱說明文件。如需更多實作詳細資料,請參閱開發人員指南。
來源試用:多重 IdP API
您可以透過示範 RP 試用 Multi IdP API,也可以使用 Chrome 128 以上版本,以開發人員身分試用。
以使用者身分試用
以使用者身分親自體驗。請確認下列事項:
- Chrome 未設定為封鎖網頁上的第三方登入提示:
chrome://settings/content/federatedIdentityApi。 - 您已登入多個示範 IdP。按照示範頁面的指示操作。
請注意,如要在來源未註冊原始碼試用的網站上試用 Multi-IdP,您需要在 chrome://flags/#fedcm-multi-idp 下啟用功能旗標。
以開發人員身分試用
如果登入供應商在 RP 中嵌入了 JavaScript SDK (建議做法),供應商可以實作 navigator.credentials.get() 呼叫來啟用多個 IdP,RP 開發人員不需要變更程式碼。否則,RP 必須自行呼叫 FedCM API。
如要在 RP 上測試多個 IdP,請指定支援的供應商陣列,如下所示:
try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configUrl: "https://idp1.example/foo.json", // first IdP
clientId: "123",
},
{
configUrl: "https://idp2.example/bar.json", // second IdP
clientId: "456",
}
]
}
});
const token = cred.token;
const currentConfigFileUrl = cred.configURL;
if (cred.configURL === 'https://idp1.example/foo.json') {
// handle the token for idp1.example
} else if (cred.configURL === 'https://idp2.example/bar.json') {
// handle the token for idp2.example
}
} catch (error) {
console.error("Error during credential retrieval:", error);
}
產生的物件中的 configURL 屬性會儲存使用者驗證的 IdP 設定檔網址。RP 可以決定如何處理產生的 token,因為這會因 IdP 而異。
參加來源試用
您可以透過來源試用程序試用新功能,並針對可用性、實用性和有效性提供意見。詳情請參閱「開始使用來源試用計畫」。
如要試用 Multi IdP 功能,請註冊 Chrome 128 以上版本的來源試用。
如要試用多重 IdP,RP 可以註冊來源並執行第一方來源試用。IdP 也可以註冊第三方來源試用,讓所有使用 JavaScript SDK 的 RP 都能使用多重 IdP 功能。
如要參加來源試用,請按照下列步驟操作:
- 前往 Multi IdP API 來源試用註冊頁面。 2. 按一下「註冊」按鈕並填寫表單,即可要求權杖。
- 如要註冊第一方來源試用,請在「Web Origin」欄位中輸入 RP 的來源。如果是第三方來源試用版,請輸入 IdP JavaScript SDK 的來源,然後勾選「第三方比對」方塊。
- 按一下「提交」。
- 在 RP 頁面提供核發的權杖:
- 適用於第一方原始碼試用計畫參與者:
- 以
<head>中的中繼標記形式:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">- 以 HTTP 標頭形式:Origin-Trial: TOKEN_GOES_HERE - 第三方原始碼試用計畫參與者: - 透過程式輔助方式提供權杖。
- 適用於第一方原始碼試用計畫參與者:
- 以
Android 版 Chrome 的按鈕模式 API
從 Chrome 第 128 版開始,Button Mode API 的來源試用將在 Android 版 Chrome 上進行,這是繼電腦版的初始試用後,首次在 Android 版 Chrome 上進行試用。透過按鈕模式 API,即使使用者在 API 呼叫時登出 IdP,身分識別提供者仍可使用 FedCM API。登入流程是由使用者手勢啟動,更能反映使用者的意圖。
Chrome 128 推出新功能,可讓 IdP 直接在用戶端中繼資料端點回應中加入 RP 的官方標誌圖示。在按鈕模式下,這項功能可提升行動裝置上的使用者介面體驗。
與設定檔中的 IdP 品牌宣傳類似,RP 的圖示可在 IdP 端設定,並在 client_metadata_endpoint 回應中傳回,如下所示:
"privacy_policy_url": "https://rp.example/privacy_policy.html",
"terms_of_service_url": "https://rp.example/terms_of_service.html",
"icons": [{
"url": "https://idp.example/rp-icon.ico",
"size": 40
}]
如要進一步瞭解圖示支援功能,請參閱開發人員文件。
如果使用者尚未登入,FedCM 會使用 Chrome 自訂分頁 (CCT),提示使用者透過 IdP 提供的 login_url 登入 IdP。
如果使用者使用回訪帳戶重新驗證,系統不會顯示揭露資訊 UI。
如要註冊來源試用,請參閱電腦版按鈕模式 API 的操作說明。如果您已在電腦上註冊原始碼試用,從 Chrome 128 開始,Android 版 Chrome 會自動提供這項功能。
Android 版 Chrome 適用的 Continuation API 套件
從 Chrome 第 128 版起,Android 版 Chrome 將提供 Continuation API 套件,做為來源試用的一部分。這項 API 先前已在電腦版進行初步試用。這個套件包含多項 FedCM 功能,包括續傳 API、參數 API、欄位 API、多個 configURL 和自訂帳戶標籤。
透過 Continuation API,您可以建立多步驟登入流程。Parameters API 可讓您將其他參數傳遞至 IdP。RP 可透過 Fields API 要求特定帳戶屬性,在 FedCM 對話方塊中顯示揭露 UI。此外,多個 configURL 支援 IdP 的多個設定檔,而自訂帳戶標籤則允許 IdP 註解帳戶,以便 RP 依據這些標籤篩選帳戶。
如要進一步瞭解 Continuation API bundle,請參閱這篇網誌文章。如要註冊原始碼試用,請按照這些指示操作。如果您已在電腦上註冊原始碼試用,從 Chrome 128 開始,Android 版 Chrome 就會自動提供這些功能。
參與討論及分享意見
如有任何意見或遇到問題,歡迎回報問題。我們會持續更新標準 FedCM 開發人員指南,以及累積的更新記錄頁面。