Chrome 122'den itibaren, Birleştirilmiş Kimlik Bilgisi için Bağlantıyı Kesme API'si Management API'yi (FedCM) kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan Bağlantıyı kesme API'si, bağlı tarafların, kullanıcılarının üçüncü taraf çerezlerine gerek kalmadan kimlik sağlayıcının hesabını kullanır. Ayrıca FedCM'nin aynı siteyi işleme sürecinde yapılan iki güncellemedir.
API bağlantısını kes
Bir kullanıcı bağlı bir tarafta (RP - kimlik doğrulama için kimlik sağlayıcı) kimlik federasyonu, kimlik doğrulama provider (IdP: kimlik doğrulama ve hesap bilgilerini sağlayan hizmet) diğer taraflara) gönderilir) genellikle bağlantıyı kendi sunucusunda kaydeder. Depolanan bağlantısı, IdP'nin kullanıcının oturum açtığı ve kısıtlanmış olan kısıtlanmış tarafları takip etmesine olanak tanır. deneyimlerini optimize etmek için kullanır. Örneğin, kullanıcılar web sitenizi ziyaret ettiğinde daha sonra IdP'ye geri döndüğünde, IdP'ye sahip kullanıcı hesabı otomatik yeniden kimlik doğrulama ve otomatik doğrulama gibi özelliklere kullanılan hesabı gösteren kişiselleştirilmiş düğmeler.
IdP'ler bazen hesabın kısıtlanmış taraf ile bağlantısını kesmek için bir API sunar. Ancak bağlantı kesme akışının kimliği doğrulandı ve IdP çerezlerinin kullanılması gerekiyor. Dünyada Üçüncü taraf çerezleri olmadan, kullanıcı RP'yi ziyaret ettiğinde herhangi bir tarayıcı Kısıtlanmış tarafın IdP ile bağlantısını kesmesi için API. Birden fazla IdP olabileceği için aynı IdP'den alınmış hesaplarsa, bağlantı kaldırma akışı bilmeniz gerekir.
Bağlantıyı kesme API Kullanıcının, tarayıcıda IdP hesabının RP ile bağlantısını kesmesine de olanak tanır. aynı IdP sunucusundaki gibi belirler. Kullanıcının ihtiyaçlarını Birleşik Kimlik Bilgisi'ni kullanarak kimlik federasyonundan geçmiş olmak Management API'yi (FedCM) tıklayın. Bağlantı kesildiğinde, kullanıcı yeni bir kullanıcı kullanıcı tarafından etkinleştirilebilir.
IdP'nin Kısıtlanmış Taraf ile bağlantısını kesme
Kullanıcı daha önce FedCM aracılığıyla IdP'yi kullanarak Kısıtlanmış Taraf'ta oturum açtıysa
tarayıcı tarafından yerel olarak bağlı olan bağlı liste
hesaplar. Kısıtlanmış taraf,
IdentityCredential.disconnect()
işlevi. Bu işlev,
üst düzey RP çerçevesi. Kısıtlanmış tarafın, kullandığı clientId
olan configURL
öğesini geçirmesi gerekir.
ve IdP'nin bağlantısının kaldırılması için bir accountHint
girin. Hesap
ipucu, bağlantı kesme uç noktası tanımlayabildiği sürece rastgele bir dize olabilir.
bir e-posta adresi veya kullanıcı kimliği gibi,
hesap listesi uç noktasının sağladığı hesap kimliğiyle eşleşmelidir:
// Disconnect an IdP account "account456" from the RP "https://idp.com/". This is invoked on the RP domain.
IdentityCredential.disconnect({
configURL: "https://idp.com/config.json",
clientId: "rp123",
accountHint: "account456"
});
IdentityCredential.disconnect()
, Promise
döndürür. Bu vaat
bir istisnayı kapsayabilir:
- Kullanıcı, FedCM üzerinden IdP'yi kullanarak Kısıtlanmış Taraf'ta oturum açmamıştır.
- API, FedCM izin politikası olmadan bir iFrame içinden çağrılır.
- configURL geçersiz veya bağlantı kesme uç noktası yok.
- İçerik Güvenliği Politikası (İGP) denetimi başarısız olur.
- Bekleyen bir bağlantı kaldırma isteği var.
- Kullanıcı, tarayıcı ayarlarında FedCM'yi devre dışı bırakmış.
IdP'nin bağlantı kesme uç noktası bir yanıtında, Kısıtlanmış Taraf ve IdP'nin bağlantısı kesilir. ve vaatleri tamamlanacak. Bağlantısı kesilen kullanıcı hesapları, bağlantı kesme işleminden uç nokta.
IdP yapılandırma dosyasını ayarlayın
Bağlantıyı kesme API'sini desteklemek için IdP'nin, bağlantı kesme özelliğini desteklemesi gerekir.
uç noktası ile birlikte IdP'de disconnect_endpoint
özelliğini ve yolunu sağlayın
yapılandırma dosyası oluşturun.
{
"accounts_endpoint": "/accounts",
"id_assertion_endpoint": "/assertion",
...
"disconnect_endpoint: "/disconnect"
}
Bağlantı kesme uç noktasında hesabın bağlantısını kesin
IdentityCredential.disconnect()
çağrıldığında, tarayıcı bir çapraz kaynak gönderir
Çerezler ve şu içerik türü ile POST
isteği:
application/x-www-form-urlencoded
şu bilgileri bulabilirsiniz:
Özellik | Açıklama |
---|---|
account_hint |
IdP hesabıyla ilgili bir ipucu. |
client_id |
Kısıtlanmış tarafın müşteri tanımlayıcısı. |
POST /disconnect HTTP/1.1
Host: idp.example
Origin: rp.example
Content-Type: application/x-www-form-urlencoded
Cookie: 0x123
Sec-Fetch-Dest: webidentity
account_hint=account456&client_id=rp123
İsteği aldıktan sonra IdP sunucusu şunları yapmalıdır:
- İsteğe CORS (Kaynaklar Arası Kaynak) ile yanıt verin Paylaşım).
- İsteğin bir
Sec-Fetch-Dest: webidentity
HTTP başlığı içerdiğini doğrulayın. Origin
başlığını,client_id
tarafından belirlenen RP kaynağıyla eşleştirin. Eşleşmiyorlarsa reddedin.account_hint
ile eşleşen hesabı bulun.- Kullanıcı hesabının, kısıtlanmış taraf hesapları listesinden bağlantısını kesin.
- Tarayıcıya, JSON dosyasında tanımlanan kullanıcının
account_id
ile yanıt verin biçimindedir.
Örnek bir yanıt JSON yükü şu şekilde görünür:
{
"account_id": "account456"
}
IdP, tarayıcının şununla ilişkilendirilmiş tüm hesapların bağlantısını kesmesini isterse:
herhangi bir hesap kimliğiyle eşleşmeyen bir dize (ör. "*"
) iletin.
Kısıtlanmış taraf ve IdP aynı sitede olduğunda /.well-known/web-identity
kontrolü artık atlanıyor
Bir FedCM sistemi geliştirirken RP sunucu alanlarını test etmek veya hazırlamak
Üretim IdP sunucusunun alt alan adları için geçerlidir. Örneğin, üretim IdP sunucusu
idp.example
konumunda ve hem hazırlık RP sunucusu hem de hazırlık IdP sunucusunda
staging.idp.example
konumunda. Ancak, iyi bilinen dosyanın
IdP sunucusunun eTLD+1'inin kökünde, bulunduğu konumda olmalıdır.
idp.example/.well-known/web-identity
ve üretim sunucusudur. Başlangıç
geliştiricilerin üretime dosya yerleştirmesi her zaman mümkün değildir
ortamı geliştirme aşamasında olması, bu onların FedCM'yi test etmesini engeller.
Chrome 122 sürümünden itibaren, RP alanı ile IdP alanı aynıysa Chrome bilinen dosyayı kontrol etmeyi atlar. Bu şekilde, geliştiriciler anlatacağım.
Alt kaynaklar artık aynı siteye giriş durumunu ayarlayabilir
Önceden, Chrome sadece giriş
durum (
örneğin Set-Login: logged-in
başlığını kullanarak) için
aynı kaynak
üstlenme yaşarlar. Bu,
aynı-site
Giriş durumunu ayarlayan fetch()
istek.
Örneğin, kullanıcıların kullanıcı adlarını ve bilgilerini girmelerine izin veren
şifre idp.example
adresindedir ancak kimlik bilgileri login.idp.example
adresinde yayınlanır
fetch()
ile. Giriş Durumu'nu kullanarak giriş durumunu tarayıcıya kaydetme
İki alan adı çapraz kaynak olduğu ve aynı siteye ait olduğu için API mümkün değildi.
Bu değişiklikle,
aynı site
içerir ve yukarıdaki örneğin, tüm üst öğelerin
login.idp.example
kullanıcısının HTTP üstbilgisi (Set-Login:
logged-in
) kullanan giriş durumu.
Özet
FedCM artık Bağlantıyı Kesme API'sini kullanarak Kısıtlanmış Taraf'ın IdP ile bağlantısını kesebilir
üçüncü taraf çerezlerine bağımlı kalmadan
kullanabilirsiniz. Bunun için şu numarayı arayın:
Kısıtlanmış taraf IdentityCredential.disconnect()
. Bu işlevle, tarayıcı
IdP'nin
sunucudaki ve ardından tarayıcıda bulunan bağlantıdır.
Kısıtlanmış taraf, isteğe bağlı olarak /.well-known/web-identity
kontrolünün atlandığını duyurduk.
ve IdP'ler test amacıyla aynı sitedeyse. Ayrıca, giriş bilgisi
aynı sitenin IdP alt kaynağından gelen bir HTTP yanıt başlığı aracılığıyla durum artık gösterilmektedir.
yapmasını sağlar.