Chrome 120, FedCM için Login Status API'yi gönderiyor. Login Status API (önceki adıyla IdP Oturum Açma Durum API) kullanıcıları web sitenize erişirken tarayıcıya sinyal vermek için ve çıkış yapabilirsiniz. Bu sinyal, FedCM tarafından sessiz zamanlama saldırısını ele almak için kullanılır ve bunu yaparak FedCM'nin üçüncü taraf olmadan çalışmasına olanak çerezlerinin tamamını kullanın. Bu güncelleme, daha önce oluşturduğumuz geriye dönük uyumsuz son değişiklikleri, Bu sözleşmenin amacı, FedCM, çalışma kapsamımız kapsamındadır.
Giriş Durumu API'si, gizlilik mülkünü ve kullanılabilirliği iyileştirse de geriye dönük olarak uyumsuz değişiklik olabilir. Mevcut bir aşağıdaki adımları izleyerek güncellediğinizden emin olun: bakın.
Chrome ayrıca, Chrome'un sunduğu iki yeni Federated Credential Management (Birleştirilmiş Kimlik Bilgisi Yönetimi) (FedCM) özellikleri:
- Error API: Oturum açma denemeleri başarısız olduğunda kullanıcıları yerel bir kullanıcı arayüzüyle bilgilendir kimlik onayı uç noktasından gelen sunucu yanıtına göre (varsa) temel alınır.
- Auto-Selected Flag API: Kimlik sağlayıcıya (IdP) bildirim gönderin ve kimlik bilgisi akışta otomatik olarak seçilmişse bağlı taraf (RP) içerir.
Giriş Durumu API'sı
Giriş Durumu API'si, bir web sitesinin (özellikle bir IdP'nin) kullandığı bir mekanizmadır. Tarayıcı, kullanıcının IdP'deki giriş durumu. Bu API ile tarayıcı IdP'ye yapılan gereksiz istekleri azaltma ve olası zamanlama saldırılarını hafifletme.
Tarayıcıyı, kullanıcının giriş durumu hakkında bilgilendirin
IdP'ler, bir HTTP üstbilgisi göndererek kullanıcının giriş durumunu tarayıcıya bildirebilir
veya kullanıcı IdP'de oturum açtığında veya
kullanıcısının tüm IdP hesaplarındaki oturumu kapatılır. Her bir IdP (IdP) için
yapılandırma URL'si) kullanıyorsa tarayıcı, giriş durumunu temsil eden bir üç durumlu değişken tutar
olası değerlerle logged-in
, logged-out
ve unknown
. Varsayılan durum
unknown
.
Kullanıcının oturum açtığını bildirmek için bir Set-Login: logged-in
HTTP üst bilgisi gönderin
isteği gönderin:
Set-Login: logged-in
Alternatif olarak, JavaScript API'sini navigator.login.setStatus('logged-in')
çağırın
şu IdP kaynağını kullanabilirsiniz:
navigator.login.setStatus('logged-in');
Bu aramalar, kullanıcının giriş durumunu logged-in
olarak kaydeder. Kullanıcı giriş yaptığında
durum logged-in
olarak ayarlanırsa RP araması FedCM, IdP'nin
hesaplar uç noktasını listeler ve FedCM'de kullanılabilir hesapları gösterir.
iletişim kutusu.
Kullanıcının tüm hesaplarındaki oturumunun kapatıldığını bildirmek için üst düzey gezinme bölümünde veya aynı kaynak alt kaynağından Set-Login:
logged-out
HTTP üst bilgisi gönderin
istek:
Set-Login: logged-out
Alternatif olarak, IdP'den JavaScript API'yi navigator.login.setStatus('logged-out')
çağırabilirsiniz.
kaynak:
navigator.login.setStatus('logged-out');
Bu aramalar, kullanıcının giriş durumunu logged-out
olarak kaydeder. Kullanıcı giriş yaptığında
durumu logged-out
. FedCM çağrışımı, herhangi bir
IdP'nin hesap listesi uç noktasına yönelik istek.
unknown
durumu, IdP giriş bilgilerini kullanarak sinyal göndermeden önce ayarlanır.
Status API'ye dokunun. Bu durumu daha iyi bir geçiş için sunduk. Çünkü kullanıcı
Bu API'yi gönderdiğimizde IdP'de zaten oturum açmış durumdasınız. IdP,
bunu, FedCM ilk kez çağrıldığında tarayıcıya bildirme şansı. İçinde
Bu durumda, IdP'nin hesap listesi uç noktasına bir istekte bulunur ve
hesap listesi uç noktasından gelen yanıta göre durumu:
- Uç nokta etkin hesapların listesini döndürürse durumu şu şekilde güncelleyin:
logged-in
tıklayın ve FedCM iletişim kutusunu açarak bu hesapları görüntüleyin. - Uç nokta hiçbir hesap döndürmezse durumu
logged-out
olarak güncelleyin ve başarısız olabilir.
Kullanıcı oturumunun süresi dolarsa ne olur? Kullanıcının dinamik bir giriş akışıyla oturum açmasına izin verin.
IdP, kullanıcının giriş durumunu tarayıcıya sürekli olarak bildirse de
oturumun sona ermesi gibi durumlar senkronize olmayabilir. Tarayıcı,
oturum açıldığında, hesap listesi uç noktasına kimlik bilgileri içeren bir istek gönderilmesini sağlar.
durum logged-in
, ancak oturum devam ettiği için sunucu hiçbir hesap döndürmedi
artık kullanılamıyor. Böyle bir senaryoda, tarayıcı otomatik olarak
kullanıcının bir iletişim kutusu üzerinden IdP'de oturum açmasını sağlayın.
FedCM iletişim kutusunda, aşağıdaki resimde gösterildiği gibi oturum açmayı öneren bir mesaj görüntülenir.
Kullanıcı Devam düğmesini tıkladığında tarayıcı, IdP'nin giriş sayfasına gidin.
ziyaret edin.Giriş sayfası URL'si, IdP yapılandırmasının bir parçası olarak login_url
ile belirtilir.
dosyası olduğundan emin olun.
{
"accounts_endpoint": "/auth/accounts",
"client_metadata_endpoint": "/auth/metadata",
"id_assertion_endpoint": "/auth/idtokens",
"login_url": "/login"
}
}
İletişim kutusu, birinci taraf çerezlerine sahip normal bir tarayıcı penceresidir. Her neyse IdP'ye bağlıdır ve herhangi bir pencere tanıtıcısı kullanılamaz RP sayfasına erişim izni isteyebilir. Kullanıcı oturum açtığında IdP şunları yapmalıdır:
Set-Login: logged-in
üstbilgisini gönderin veyanavigator.login.setStatus("logged-in")
API'sini kullanarak tarayıcıya kullanıcı oturum açtı.- İletişim kutusunu kapatmak için
IdentityProvider.close()
öğesini çağırın.
Login Status API davranışını şurada deneyebilirsiniz: demo'ya gidin.
- IdP'ye git ve oturum aç düğmesine dokunun.
- Rastgele bir hesapla oturum açın.
- Hesap Durumu açılır menüsünden Oturumun Süresi Doldu'nu seçin.
- Kişisel bilgileri güncelle düğmesine basın.
- FedCM'yi denemek için Kısıtlanmış Taraf'ı ziyaret edin düğmesine dokunun.
IdP'ye giriş işlemini modül davranışı üzerinden gözlemleyebilirsiniz.
Hata API'sı
Chrome, kimlik onayı uç noktasına bir istek gönderdiğinde (örneğin, bir Kullanıcı, FedCM kullanıcı arayüzündeki veya otomatik yeniden kimlik doğrulamadaki Farklı devam et düğmesini tıkladığında tetiklendiğinde, IdP geçerli nedenlerle bir jeton yayınlayamayabilir. Örneğin, istemci yetkisizyse sunucu geçici olarak kullanılabilir değil vb. Şu an için Chrome aşağıdaki durumlarda isteği sessizce devre dışı bırakır: Söz konusu hataları düzeltmeye çalışır ve yalnızca verdiği sözü reddederek Kısıtlanmış Taraf'a bildirim gönderir.
Error API ile Chrome, tarafından sağlanan hata bilgileriyle yerel bir kullanıcı arayüzü göstererek kullanıcıyı bilgilendirir yapılandırdığınızdan emin olun.
IdP HTTP API'si
id_assertion_endpoint
yanıtında IdP,
ve web tarayıcısı. Bu teklifte, bir sertifikanın
verilemiyorsa IdP "hata" döndürebilir ve bu yanıtta iki yeni
isteğe bağlı alanlar:
code
url
// id_assertion_endpoint response
{
"error": {
"code": "access_denied",
"url": "https://idp.example/error?type=access_denied"
}
}
IdP, kod için OAuth 2.0'daki bilinen hatalardan birini seçebilir.
belirtilen hata
liste
[invalid_request
, unauthorized_client
, access_denied
, server_error
ve
temporarily_unavailable
] veya rastgele bir dize kullanın. İkinci durumda Chrome,
hata kullanıcı arayüzünü genel bir hata mesajıyla oluşturur ve kodu
Kısıtlanmış Taraf
url
için,
hatasını döndürür. Bu alan
Tarayıcılar, yerel bir dilde zengin hata mesajları sağlayamadığından, kullanıcılar
Kullanıcı arayüzü. Örneğin, sonraki adımlar için bağlantılar, müşteri hizmetleri iletişim bilgileri ve
bu şekilde devam eder. Kullanıcı hata ayrıntıları ve hatanın nasıl düzeltileceği hakkında daha fazla bilgi edinmek isterse
daha fazla ayrıntı için tarayıcının kullanıcı arayüzünden sağlanan sayfayı ziyaret edebilir. URL
configURL
, IdP ile aynı sitede olmalıdır.
try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configURL: 'https://idp.example/manifest.json',
clientId: '1234',
},
],
}
});
} catch (e) {
const code = e.code;
const url = e.url;
}
Otomatik Olarak Seçilen İşaretleme API'si
mediation: optional
, varsayılan kullanıcı uyumlulaştırmasıdır
davranış
otomatik olarak yeniden kimlik doğrulamayı tetikler.
yapmasını sağlar. Ancak otomatik yeniden kimlik doğrulama,
kullanılamıyor
bunu yalnızca tarayıcı bilir; kullanım dışı olduğunda kullanıcıdan
açık kullanıcı uyumlulaştırmasıyla
birlikte. Bu, farklı özelliklere sahip bir akıştır.
- API çağrısı yapan bir kullanıcının bakış açısından, bir kimlik jetonu aldıklarında otomatik olarak yeniden kimlik doğrulama işleminin sonucu olup olmadığını görebilir akışı sağlar. Bu da API performansını değerlendirmelerini ve uygulama geliştirmelerini zorlaştırıyor. uyarlayabilirsiniz.
- IdP açısından bakıldığında, otomatik bir modelin
performans değerlendirmesi için yeniden kimlik doğrulama gerçekleştirildi veya gerçekleşmedi. Ayrıca,
açık bir kullanıcı uyumlulaştırmasının dahil olup olmaması,
güvenlikle ilgili özellikler. Örneğin, bazı kullanıcılar daha yüksek bir bütçe
kimlik doğrulamada açık kullanıcı uyumlulaştırması gerektiren güvenlik katmanı. Bir
IdP bu tür uyumlulaştırma olmadan bir jeton isteği alır,
farklı bir şekilde talep edebilirsiniz. Örneğin, RP'nin
mediation: required
ile FedCM API'yi tekrar çağırın.
Bu nedenle, otomatik yeniden kimlik doğrulama akışının görünürlüğünü sağlamak geliştiricilerin yararına.
Auto-selected Flag API ile Chrome, uygunsuz bir kullanıcı izninin alınıp alınmadığını Otomatik olarak yeniden kimlik doğrulama yapıldığında hem IdP hem de RP ile Farklı devam et düğmesi veya açık bir uyumlulaştırma gerçekleşmiştir. Paylaşım yalnızca kullanıcı, IdP/RP iletişimi için izin verildiğinden emin olun.
IdP paylaşımı
Chrome, bilgileri IdP sonrası kullanıcı izniyle paylaşmak için
POST
isteğindeki is_auto_selected=true
id_assertion_endpoint
:
POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=Ct0D&disclosure_text_shown=true&is_auto_selected=true
Kısıtlanmış taraf paylaşımı
Tarayıcı, bilgileri isAutoSelected
üzerinden kısıtlanmış taraf ile şu şekilde paylaşabilir:
IdentityCredential
:
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: '1234'
}]
}
});
if (cred.isAutoSelected !== undefined) {
const isAutoSelected = cred.isAutoSelected;
}
Etkileşimde bulunun ve geri bildirim paylaşın
Test sırasında geri bildiriminiz varsa veya herhangi bir sorunla karşılaşırsanız bunları paylaşabilirsiniz ile crbug.com.
Fotoğraf: Girl kırmızı şapkalı Unsplash