在 Chrome 123 中,您可以使用網域提示和 Federated Credential Management API (FedCM)。取代為 透過 Domain Hint API 來說,開發人員只要安裝 顯示所接受網域的聯合登入帳戶。
網域提示 API
FedCM 可讓使用者輕鬆登入信賴方 (RP、 參照網站) 提供者 (IdP)。然而在某些情況下 RP 只會知道 與特定網域相關聯的帳戶可以登入該網站。這個 在企業環境中尤其常見,因為存取網站是在企業環境中 僅限於企業網域為了提供更優質的使用者體驗,FedCM API 可讓 RP 只顯示可用於登入 受限方。這可避免使用者嘗試使用 帳戶時,將只看到錯誤訊息 之後 (或關閉登入無效選項),因為使用者的 未使用該帳戶。
RP API 可讓 RP API 在 FedCM API 中指定 domainHint
屬性
呼叫,只顯示使用者相符的帳戶。IdP 可以提供
domain_hints
屬性在帳戶清單的回應中
端點
指出帳戶關聯的網域。這樣一來,瀏覽器
可以顯示相符的帳戶,而不揭露所要求網域提示
IdP 的 IP 位址。
帳戶清單端點的 JSON 回應範例如下所示 包括:
{
"accounts": [{
"id": "1234",
"given_name": "John",
"name": "John Doe",
"email": "john_doe@idp.example",
"picture": "https://idp.example/profile/123",
"approved_clients": ["123", "456", "789"],
}, {
"id": "5678",
"given_name": "Johnny",
"name": "Johnny",
"email": "johnny@idp.example",
"picture": "https://idp.example/profile/456"
"approved_clients": ["abc", "def", "ghi"],
"domain_hints": ["corp.example"]
}]
}
受限方可以使用 domainHint
屬性呼叫 navigator.credentials.get()
,執行以下操作:
篩選帳戶舉例來說,假設使用者造訪 corp-partner.example
並
使用 corp.example
的帳戶登入。網站會以下列方式叫用 API
如下:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
domainHint
值未傳送至帳戶清單
端點
,因為這可以是 IdP 的指紋向量。
而是會照常執行 FedCM 要求,並篩除
不符合domainHint
navigator.credentials.get()
呼叫。接著,Chrome 會向
建立新的帳戶清單這個方法類似於登入提示
API,但這兩個
API 能回答不同的問題Login Hint API 的作用是
找到「我希望的使用者」 ID,而「網域提示」的目標是回答
公司或伺服器必須屬於此帳戶?」。
使用 domainHint: "any"
時,Chrome 會篩除沒有登入的帳戶
任何網域 (即 domain_hints
未傳遞或空白)。例如:
可使用此做法,在 RP 僅允許註冊客戶帳戶時使用
上傳資料集之後,您可以運用 AutoML
自動完成部分資料準備工作
如果沒有與 domainHint
相符的帳戶,FedCM 對話方塊會顯示登入提示。
這可讓使用者登入與要求提示相符的 IdP 帳戶
受限方。使用者輕觸提示後,系統會開啟彈出式視窗,其中顯示
設定中指定的登入網址
檔案。連結為
然後附加登入提示和網域提示查詢參數
![如果沒有帳戶與 domainHint 相符,系統會顯示登入提示範例。](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/fedcm-123.jpg?authuser=5&hl=zh-tw)
domainHint
時的登入提示範例。