Chrome 123'ten itibaren Federated Credential Management API (FedCM) ile birlikte Domain Hints'i kullanabilirsiniz. Alan İpucu API'si sayesinde geliştiriciler, yalnızca kabul ettikleri alandaki birleşik giriş hesaplarını göstererek daha iyi bir kullanıcı deneyimi sağlayabilir.
Domain Hint API
FedCM, kullanıcının bir kimlik sağlayıcı (IdP) tarafından sağlanan hesap bilgilerini kullanarak güvenen tarafa (RP, bir web sitesine atıfta bulunur) giriş yapmasını kolaylaştırmak için kullanılabilir. Ancak RP'nin, siteye yalnızca belirli bir alanla ilişkili hesapların giriş yapmasına izin verildiğini zaten bildiği durumlar vardır. Bu durum özellikle erişilen sitenin kurumsal alanla sınırlı olduğu kurumsal senaryolarda yaygındır. FedCM API, daha iyi bir kullanıcı deneyimi sunmak için RP'nin yalnızca RP'ye giriş yapmak için kullanılabilecek hesapları göstermesine olanak tanır. Bu, kullanıcının kurumsal alanın dışındaki bir hesap kullanarak RP'ye giriş yapmaya çalıştığı ancak doğru hesap türü kullanılmadığı için daha sonra bir hata mesajı (veya girişin işe yaramadığı durumlarda sessiz kalma) aldığı senaryoları önler.
Alan adı ipucu API'si ile RP'ler, yalnızca kullanıcıyla eşleşen hesapları göstermek için FedCM API çağrısında bir domainHint
mülkü belirtebilir. Kimlik sağlayıcı, bir hesabın hangi alan adlarıyla ilişkili olduğunu belirtmek için hesap listesi uç noktasından gelen yanıtın bir parçası olarak domain_hints
mülkü sağlayabilir. Bu sayede tarayıcı, istenen alan adı ipucunu kimlik sağlayıcıya göstermeden eşleşen hesapları gösterebilir.
Hesap listesi uç noktasından alınan örnek bir JSON yanıtı aşağıdaki gibi görünür:
{
"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"]
}]
}
RP, hesapları filtrelemek için navigator.credentials.get()
'yi bir domainHint
mülkü ile çağırabilir. Örneğin, bir kullanıcının corp-partner.example
sitesini ziyaret ettiğini ve corp.example
'daki bir hesapla oturum açtığını varsayalım. Site, API'yi aşağıdaki gibi çağırır:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
domainHint
değeri, sunucu tarafı filtreleme için IdP'ye parmak izi vektörü olabileceğinden hesap listesi uç noktasına gönderilmez.
Bunun yerine Chrome, her zamanki gibi bir FedCM isteği gerçekleştirir ve navigator.credentials.get()
çağrısı tarafından belirtilen domainHint
değeriyle eşleşmeyen hesapları filtreler. Ardından Chrome, kullanıcıya yeni hesap listesini içeren FedCM iletişim kutusunu gösterir. Bu yaklaşım, Giriş İpucu API'sine benzer ancak bu iki API farklı soruları yanıtlar. Giriş İpucu API'si "İstediğim kullanıcının kimliği hangisi?" sorusunu yanıtlamayı amaçlarken Alan İpucu API'si "Bu hesap hangi kuruluşa veya sunucuya ait olmalıdır?" sorusunu yanıtlamayı amaçlar.
domainHint: "any"
kullanıldığında Chrome, alanı olmayan hesapları filtreler (yani domain_hints
iletilmez veya boştur). Örneğin, bu özellik, RP'nin kayıt sürecinde yalnızca yönetilen hesaplara izin verdiği kullanım alanlarına olanak tanır.
domainHint
ile eşleşen hesap olmadığında FedCM iletişim kutusunda bir giriş istemi gösterilir. Bu istem, kullanıcının RP tarafından istenen ipucu ile eşleşen bir IdP hesabına giriş yapmasına olanak tanır. Kullanıcı istem üzerine dokunduğunda, yapılandırma dosyasında belirtilen giriş URL'sinin bulunduğu bir pop-up pencere açılır. Bağlantıya daha sonra giriş ipucu ve alan ipucu sorgu parametreleri eklenir.

domainHint
ile eşleşen hesap olmadığında gösterilen örnek giriş istemi.