FedCM ile sorunsuz ve gizli kullanıcı kimlik doğrulaması: Seznam'ın uygulaması

Birçok sektördeki sektör liderleri, tüm kullanıcılarına harika bir deneyim sunarken gizliliği korumanın ne kadar önemli olduğunun farkındadır. Seznam, kullanıcı deneyimi ve gizliliğinden ödün vermemeye odaklanarak Federated Credential Management (FedCM) özelliğini başarıyla entegre etti.

Hedef profiller: FedCM'den yararlanan şirketler

Farklı alanlardaki kuruluşlar FedCM'yi çözümlerine entegre etti. FedCM, birleşik kimlik yönetimi için tasarlandığından kimlik sağlayıcılar (IdP'ler) bu teknolojiden en çok yararlanan taraflardır ve daha iyi bir giriş deneyimi sunmak için FedCM'yi kullanır. Birçoğu aynı zamanda kimlik sağlayıcı olarak da hareket eden e-ticaret hizmeti sağlayıcıları ve ödeme sağlayıcıları, FedCM'nin uygulanmasıyla kullanıcı deneyimini iyileştirme fırsatları da belirledi.

Seznam

Seznam, Çek nüfusunun% 90'ına ulaşan bir Avrupa teknoloji şirketi ve kimlik sağlayıcıdır. Sosyal, bilgi ve içerik merkezi olarak hizmet verir. Seznam, iş ortaklarının platformlarında faaliyet gösteren online mağazaların müşterilerinin Seznam hesaplarını kullanarak oturum açmasına olanak tanımak için FedCM'yi kullanmaya başladı.

FedCM iletişim kutusu eshop.starkl.com adresinde gösteriliyor ve kullanıcıya Seznam hesabıyla oturum açması öneriliyor.
Kullanıcıya iş ortağının sitesinde Seznam ile giriş yapmasını öneren FedCM iletişim kutusu.

Seznam, FedCM sayesinde iş ortaklarının ağlarında kullanıcı oturum açma oranlarında belirgin bir artış, daha iyi bir kullanıcı deneyimi ve üçüncü taraf çerezlerinin kullanılabilirliğinden bağımsız olarak tutarlı bir kimlik akışı elde etti.

Motivasyon

Seznam'ın FedCM'yi uygulama tercihi, fark ettikleri çeşitli avantajlardan kaynaklandı:

  • FedCM, son kullanıcı düşünülerek tasarlanmıştır ve kullanıcıya IdP'ye sağlanan bilgiler üzerinde kontrol olanağı tanır. Bu, Seznam'ın kullanıcıları için güvenli ve gizli bir ortam vizyonuyla uyumludur.
  • FedCM, OAuth 2.0 standardını kullanan Seznam'ın mevcut giriş deneyimiyle uyumlu, yerleşik bir tarayıcı özelliğidir.
  • FedCM, kimlik federasyonuna gizlilik odaklı bir yaklaşım olarak tasarlanmıştır. Örneğin, kullanıcının güvenen tarafı (RP) ziyaret ettiği bilgisi yalnızca kullanıcı oturum açmayı seçerse IdP ile paylaşılır. Bu, Seznam'ın sürdürülebilir iş anlayışıyla uyumludur.

Uygulama ayrıntıları

Seznam, mevcut OAuth çözümünün üzerine bir katman olarak FedCM'yi uyguladı. Bu mimaride, FedCM akışı, IdP'den RP'lere bir OAuth yetkilendirme kodunu güvenli bir şekilde iletmek için kullanılır.

FedCM jetonunun IdP tarafında OAuth yetkilendirme koduyla değiştirildiği FedCM akışını gösteren bir sıra diyagramı
OAuth ile entegre edilmiş FedCM akışı. Şemanın kodunu inceleyin.

Uygulama çalışması

Seznam, FedCM'nin uygulanmasının basit olduğunu ve mevcut yaklaşımlarıyla uyumlu olduğunu vurguladı. API'nin araştırılması ve uygulanması bir ay sürdü ve iki geliştiricinin çalışmasını gerektirdi. FedCM'nin üretime geçirilmesi iki aydan kısa sürdü. API'yi dikkatli bir şekilde incelemek için önemli ölçüde zaman harcanarak yinelemeli bir süreç izlendi.

Meydan okumalar

Erken dönemde kullanmaya başlayan Seznam, çeşitli zorluklar tespit etti ve API'nin olgunlaşmasına yardımcı olan değerli geri bildirimler sağladı.

Birden fazla kimlik sağlayıcı desteği

Seznam, FedCM'nin birden fazla kimlik sağlayıcıyı desteklemesiyle ilgileniyordu. Bu özellik sayesinde, kullanıcıların iş ortaklarının RP'lerinde Seznam veya Google hesapları arasında seçim yapabilmesi amaçlanmıştır. Ancak Seznam, FedCM uygulamasını ilk kez kullanmaya başladığında özellik uygulama sürecinin erken aşamalarındaydı ve geliştiricilerin bir kaynak denemesine kaydolup kullanıcıları için özelliği etkinleştirmek üzere bir jeton kullanması gerekiyordu. Bu nedenle Seznam, özelliğin Chrome'un kararlı sürümünde kullanıma sunulmasını beklemeyi tercih etti.

Bu özellik Chrome 136'dan itibaren kullanılabilir ve geliştiriciler birden fazla kimlik sağlayıcı için destek yapılandırabilir. Örneğin, hem Seznam hem de Google kimlik sağlayıcılarını desteklemek için IdP, iki sağlayıcıyı tek bir get() çağrısına dahil edebilir ve RP de bunu bağımsız olarak yapabilir:

  // Executed on the RP's side:
    const credential = await navigator.credentials.get({
      identity: {
        providers: [
          {
            // IdP1: Seznam's config file URL
            configURL: 'https://szn.cz/.well-known/web-identity',
            clientId: '123',
          },
          {
            // Also allow Google Sign-in
            configURL: 'https://accounts.google.com/gsi/fedcm.json',
            clientId: '456',
          },
        ],
      },
    });

Seznam, bu özelliğin çözümünün bir parçası olacağını belirtmiştir. Ayrıca FedCM ekibi, birden fazla SDK'yı destekleme özelliğini uyguluyor. Bu özellik, birden fazla get() çağrısını destekleyecek.

Gizli DNS

Seznam, test aşamasında ağ yapılandırmasıyla ilgili bir sorunla karşılaştı. Test IdP sunucuları, yalnızca özel DNS üzerinden erişilebilen bir özel ağda bulunuyordu. Bu kurulum, hizmetler herkese açık olarak sunulmadan önce dahili test ve geliştirme ortamlarında yaygın olarak kullanılır.

Ancak bu kurulum bir zorluğa yol açar: well-known dosyası bir eTLD+1'den sunulmalıdır ve özel geliştirme alanı Genel Ek Listesi'ne kayıtlı değildir. Bu nedenle tarayıcı, geliştirme alanında barındırılan well-known dosyasını getirmek için istek göndermez:

  • login.idp.example: Üretim alanına örnek.
  • idp.example/.well-known/web-identity: Üretimde bilinen dosya örneği.
  • login.dev.idp.example: örnek geliştirme alanı.
  • login.dev.idp.example/.well-known/web-identity: Geliştirme ortamındaki örnek well-known dosyası.

FedCM uygulaması özel bir alanda barındırıldığında, well-known dosyasına yapılan tarayıcı istekleri şu hataya neden olur:

The fetch of the well-known file resulted in a network error: ERR_NAME_NOT_RESOLVED

Bu hata, Chrome #fedcm-without-well-known-enforcement işaretini etkinleştirerek çözülebilir. Bu işaret etkinleştirildiğinde tarayıcı, test amacıyla well-known dosyasını getirmeyi atlar. Chrome'da test işaretlerini nasıl etkinleştireceğinizi öğrenin.

Özel bilgi açıklaması

Seznam, FedCM kullanıcı arayüzünün ilk tasarımının yanı sıra ek bilgiler de eklemek istediğini paylaştı. Standart FedCM iletişim kutusunda, kullanıcıya belirli verilerin (genellikle kullanıcının profil resmi, adı ve e-posta adresi) RP ile paylaşıldığını belirten sabit bir mesaj gösterilir.

FedCM ekibi, geri bildirimleri dikkate alarak API'yi genişletti ve kullanıcıya gösterilen açıklamanın özelleştirilmesine olanak tanıdı. Örneğin, Devam etme özelliği ile IdP, kullanıcıyı ek bilgi veya izin istemek için özel bir sayfaya yönlendirebilir. Chrome 132'den itibaren desteklenen özel parametreler ve alanlar özellikleri, daha fazla özelleştirmeye olanak tanır.

FedCM kaydına devam etmek için kullanıcının ek izinler vermesi gerektiğini gösteren bir IdP sayfası. Bu örnekte, Drive dosyalarını ve takvim etkinliklerini görüntüleme ve indirme izni verilir.
Kullanıcı, RP tarafından Parameters API ile kimlik onaylama uç noktasına iletilen ek izinleri inceleyip verebilir. ID assertion endpoint endpoint with the Parameters API.

Bağlı taraf kaynağı doğrulama

IdP sunucusu, isteğin RP'nin IdP'ye önceden kaydettirdiği kaynakla eşleştiğinden emin olmak için gelen bir FedCM isteğindeki Origin HTTP başlığını doğrulamalıdır. Bu sayede FedCM kimlik onaylama isteğinin client_id kullanan bir saldırgandan değil, yetkili bir RP'den geldiği doğrulanır.

Seznam'ın özel bir durumu vardır: İş ortağı RP'leri Seznam'a kaydolduğunda RP'nin kaynak verilerini istemez. Bu, RP'nin kaynağının doğrulanamadığı anlamına gelir.

Seznam'ın FedCM entegrasyonu, mevcut bir OAuth çözümünün üzerine inşa edilmiştir. Çözümün güvenli kalmasını sağlamak için alternatif bir yol izleyerek hem RP'nin client_id hem de client_secret kimliğini doğruladılar. Bu sayede kaynağın kontrol edilmesi gerekmedi.

Kimlik sağlayıcının kullanıcıya yönelik alanı

Seznam'ın kullanıcı kimlik doğrulama altyapısı öncelikle szn.cz alanında çalışır. Bu alan, FedCM için gerekli IdP uç noktalarının barındırıldığı yerdir. Ancak asıl kurumsal kimlikleri ve kullanıcıların hizmetlerini yaygın olarak tanıdığı ve güvendiği alan seznam.cz'dır.

FedCM iletişim kutusunda, IdP uç noktalarının gerçek kaynak alanı (bu örnekte szn.cz) gösterilir. seznam.cz markasına aşina olan kullanıcılar, giriş işlemi sırasında daha az tanıdık olan szn.cz alanıyla oturum açmaları istendiğinde kafaları karışabilir ve tereddüt edebilirler.

Chrome 141'den itibaren FedCM, IdP uygulamasının barındırıldığı alandan farklı bir alanın gösterilmesine izin vermez. Bu kısıtlama, kullanıcıya şeffaflık sağlamak için kasıtlı olarak yapılmış bir tasarım tercihi sonucudur. Ancak FedCM ekibi, bu sınırlamanın oluşturabileceği zorlukların farkında ve olası düzenlemeleri tartışıyor.

Etki

FedCM API sayesinde Seznam artık iş ortaklarının kullanıcılarına tek dokunuşla yetkilendirme akışları sağlayabilir. FedCM'nin kullanıcı deneyiminin diğer kimlik doğrulama yöntemlerine kıyasla sağladığı avantajları vurguladılar.

Seznam, FedCM girişine geçen web sitelerinde kullanıcı etkileşiminde önemli bir artış olduğunu belirtse de diğer faktörlerden kaynaklanan doğrudan etkiyi tam olarak belirlemek için kapsamlı bir analiz yapmadı. FedCM entegrasyonundan önce, uygulama kullanıcı tanımlama için izin verilen karma oluşturulmuş e-posta adreslerinin kullanıldığı misafir ödemelerine izin veriyordu. Böyle bir analizi gerçekleştirmenin zorluğu, kullanıcı dönüşümünün FedCM'ye atfedilip atfedilemeyeceğini veya kullanıcının konuk ödeme kullanarak satın alma işlemini tamamlayıp tamamlamayacağını tahmin etmekti. Seznam'ın hipotezine göre, FedCM'nin sunduğu kullanım kolaylığının artması bu yüksek dönüşüm oranına katkıda bulunmuş olabilir.

Sonuç

Seznam, FedCM'yi başarıyla uygulayarak mevcut OAuth çözümünün yanı sıra alternatif bir yetkilendirme akışı sağladı. Seznam geliştiricileri, kimlik sağlayıcı desteği, özel DNS kurulumları, açıklama metninin özelleştirilmesi, güvenen tarafın kaynak doğrulaması ve kullanıcıya yönelik alan adı gösterimiyle ilgili bazı zorluklarla karşılaşsa da API, uygulanmasından bu yana olgunlaşmıştır. FedCM ekibi, Seznam ve diğer erken kullanıcılardan gelen geri bildirimleri dikkate alarak bu zorlukları çözmek için daha iyi araçlar geliştirdi. Bir sonraki adım olarak Seznam, FedCM'nin birden fazla kimlik sağlayıcıyı desteklemesini uygulamayı planlıyor.