Kullanıcıların geçiş anahtarlarını daha sorunsuz bir şekilde benimsemesine yardımcı olma

Yayınlanma tarihi: 9 Mayıs 2025

Geçiş anahtarları, kimlik avına karşı dirençli ve güçlü bir kimlik doğrulama yöntemi sunar. Ancak kullanıcıların bu özellikleri kullanmaya başlaması sorunlara yol açabilir. Otomatik geçiş anahtarı oluşturma özelliği sayesinde, kullanıcılarınızın siteniz için kayıtlı bir şifresi varsa doğru zamanda geçiş anahtarları oluşturabilirsiniz. Otomatik geçiş anahtarı oluşturmayı sağlayan Koşullu Oluşturma, WebAuthn spesifikasyonunun bir parçasıdır.

İşleyiş şekli

Kullanıcıların geçiş anahtarlarını daha rahat kullanabilmesi için Koşullu Oluşturma adlı bir WebAuthn API özelliği kullanın. Koşullu oluşturma, sitenizin kullanıcıdan herhangi bir işlem yapmasını istemeden kullanıcı için geçiş anahtarı isteğinde bulunmasına olanak tanır.

Bu akış, aşağıdaki koşullar karşılandığında çalışır:

  • Kullanıcının varsayılan şifre yöneticisinde kayıtlı bir şifre vardır.
  • Şifre yakın zamanda kullanılmış. İdeal olarak, şifre tabanlı giriş başarılı olduktan hemen sonra Conditional Create'i çağırın.

Her iki koşul da karşılanıyorsa Conditional Create'i çağırarak şifre yöneticisinden kullanıcı için geçiş anahtarı oluşturmasını isteyebilirsiniz. Geçiş anahtarı başarıyla oluşturulduktan sonra kullanıcı, şifre yöneticisine bağlı olarak bilgilendirilir.

Koşullu oluşturma ile geçiş anahtarı isteği akışı.

Uyumluluk

Koşullu Oluşturma, macOS'teki Safari ve iOS'teki tüm tarayıcıların yanı sıra masaüstündeki Chrome ve Android'deki Chrome tarafından desteklenir.

Koşullu oluşturma özelliğini uygulama

Otomatik geçiş anahtarı oluşturma, Koşullu Oluşturma adlı bir WebAuthn API özelliğine dayanır. Bunlar, create() parametresi "conditional" olarak ayarlanmış normal WebAuthn create() istekleridir. Bu istekler, get() istekleri için geçiş anahtarı otomatik doldurma özelliğine benzer şekilde çalışır.mediation

Kullanıcı şifreyle giriş yaptıktan sonra koşullu oluşturma özelliğini kullanın. Oluşturma işleminin başarılı olup olmaması, şifre yöneticisine ve belirli koşulların karşılanmasına bağlıdır. Bu koşullar şifre yöneticisine göre değişebilir ve zaman içinde değişebilir. Örneğin, Google Şifre Yöneticisi (GPM) ile Chrome'da kullanıcının site için kayıtlı bir şifre kullanarak yakın zamanda oturum açmış olması gerekir.

Tarayıcı geçiş anahtarını başarıyla oluşturursa ortak anahtar kimlik bilgisi döndürür. Kaydı tamamlamak ve gelecekteki kimlik doğrulama işlemlerini etkinleştirmek için bu kimlik bilgisini arka uçunuza gönderin.

Özellik algılama

PublicKeyCredential.getClientCapabilities() işlevini çağırarak tarayıcıda Conditional Create'in kullanılabilir olup olmadığını belirleyebilirsiniz. Döndürülen bir nesnenin, conditionalCreate özelliği için true içerip içermediğine bakın.

if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
  const capabilities = await PublicKeyCredential.getClientCapabilities();
  if (capabilities.conditionalCreate) {
    // Conditional create is available
  }
}

getClientCapabilities kullanılamıyorsa Koşullu Oluşturma da kullanılamaz.

Koşullu olarak geçiş anahtarı oluşturma

Otomatik geçiş anahtarı oluşturma işlemi gerçekleştirmek için navigator.credentials.create() işlevini mediation: "conditional" ile birlikte aşağıdaki şekilde çağırın.

const cred = await navigator.credentials.create({
  publicKey: options,
  // Request conditional creation
  mediation: 'conditional'
});

Otomatik oluşturma için şifre yöneticisi ölçütlerini karşılama şansınızın en yüksek olması için kullanıcınız oturum açtıktan hemen sonra otomatik geçiş anahtarı oluşturma özelliğini kullanmanız gerekir.

Oluşan ortak anahtar kimlik bilgisini sunucuya göndererek geçiş anahtarını doğrulayabilir ve kaydedebilirsiniz. Sunucuda kullanıcının oturum açtığından emin olun.

Uyarılar

Koşullu oluşturma özelliği tek başına uygulandığında zor değildir ancak bu özelliği mevcut bir sisteme entegre ederken dikkat edilmesi gereken birkaç nokta vardır.

Sunucuda kullanıcı varlığını ve kullanıcı doğrulamasını yoksayma

Kayıt yanıtı hem "User Presence" hem de "User Verified" değerini false olarak döndürür. Bu nedenle sunucu, kimlik bilgisi doğrulaması sırasında bu işaretleri yoksaymalıdır.

Otomatik geçiş anahtarı oluşturma işlemi gerçekleştirmeden önce devam eden WebAuthn çağrısını iptal etme

RP, kullanıcının geçiş anahtarı veya şifreyle oturum açmasını beklediğinde koşullu get işlemi yapmak en iyi seçenektir. Bu durum, koşullu oluşturma işlemi gerçekleştirilmeden önce koşullu get çağrısının iptal edilmesine neden olabilir.

Bunun için AbortController uygulamasını kullanmanız ve .abort() numarasını aramanız gerekir.

// To abort a WebAuthn call, instantiate an AbortController.
const controller = new AbortController();

const cred = await navigator.credentials.get({
  publicKey: options,
  signal: controller.signal,
  // Request conditional get
  mediation: 'conditional'
});

// Abort the call
controller.abort();

İstisnaları sorunsuz şekilde yoksayma

Koşullu geçiş anahtarı oluşturma işlemi gerçekleştirildiğinde, istisnaları yoksaymanız gereken birkaç durum vardır:

  • InvalidStateError: Geçiş anahtarı sağlayıcıda zaten bir geçiş anahtarı var (excludeCredentials belirtmeyi unutmayın).
  • NotAllowedError: Geçiş anahtarı oluşturma koşulu karşılanmıyor.
  • AbortError: WebAuthn çağrısı iptal edildi.

Bu durumlarda hataların gösterilmesi, tarayıcı bunları sessizce işlediği için kullanıcıyı şaşırtabilir. Tarayıcı yalnızca başarılı olduğunda bildirim gösterir ve başarısızlıklar görünür mesajları tetiklemez.

Geçiş anahtarı kaydı başarısız olduğunda sinyal verme

Geçiş anahtarı oluşturulduğunda ancak sunucuya kaydedilemediğinde kullanıcı, başarısız bir oturum açma denemesiyle karşılaşır. Bu durum, geçiş anahtarı sağlayıcı ile sunucu arasındaki geçiş anahtarı listesi tutarsız olduğunda yaşanabilir.

Bu tür durumları önlemek için tutarlılığı korumak üzere Signal API'yi kullanın.

Şifresiz oturum açma özelliğinden yükseltme desteklenmez

Bu noktada, koşullu olarak geçiş anahtarı oluşturma işlemi, kullanıcının geçerli bir şifre girmesiyle sınırlıdır. Bu nedenle, sihirli bağlantılar, telefon numarası doğrulama veya kimlik federasyonu gibi şifresiz oturum açma yaklaşımları koşulu karşılamaz.

Özet

Otomatik geçiş anahtarı oluşturma, web sitenizde geçiş anahtarı kullanımını hızlandırabilir ve web sitenizin kullanıcılarının şifrelerden daha güvenli bir kimlik doğrulama yöntemine geçmesine yardımcı olabilir.

Geçiş anahtarları hakkında daha fazla bilgi edinmek için Geçiş anahtarlarıyla şifresiz giriş başlıklı makaleyi inceleyin.