Get your free and exclusive +45-page Authentication Analytics Whitepaper
Genel bakışa dön

Geliştiriciler için Geçiş Anahtarları Kopya Kağıdı

WebAuthn ve geçiş anahtarı (passkey) uygulaması hakkında geliştirici kılavuzu. Kopya kağıdını PDF olarak indirin veya tüm bilgiler için bu web sitesini kullanın.

Blog-Post-Author

Lukas R.

Oluşturuldu: 6 Mart 2024

Güncellendi: 3 Temmuz 2026

Geliştiriciler için Geçiş Anahtarları Kopya Kağıdı

Bu sayfa otomatik olarak çevrildi. Orijinal İngilizce sürümü buradan okuyun.

Buradan ücretsiz indirin#

Geçiş Anahtarları Kopya Kağıdını ücretsiz indirin ve tüm bilgilere ulaşın.

  • ✅ Şimdiden +4.000 indirme
  • ✅ Ally, Kmart, Octopus Energy ve Stanford CS'teki geliştirici ekipleri tarafından talep edildi
  • ✅ Pazarlama saçmalıkları yok - sadece teknik içgörüler

Kapsamlı Geçiş Anahtarı Geliştirici Kılavuzu

Geçiş Anahtarları Kopya Kağıdını İndirin

Platform desteği, tarayıcı davranışı, UX en iyi uygulamaları ve entegrasyon ipuçlarını kapsayan, geçiş anahtarlarıyla ilgili her şey için geliştirici odaklı bir referans edinin.

Geçiş Anahtarları Kopya Kağıdını İndirin

Ücretsiz Geçiş Anahtarları Kopya Kağıdını İndirin

Önemli bilgiler
  • Geçiş anahtarları ile kimlik doğrulama iki tören (ceremony) kullanır: kayıt (attestation) ve giriş (assertion). Her ikisi de kimlik doğrulayıcı tarafından imzalanmış, sunucu tarafından oluşturulan rastgele bir challenge (meydan okuma) gerektirir.
  • PublicKeyCredentialCreationOptions geçiş anahtarı kaydını yönetirken, PublicKeyCredentialRequestOptions girişi yönetir. Her iki nesne de sunucu tarafında oluşturulur ve kimlik doğrulayıcının imzalaması için challenge'ı içerir.
  • Conditional UI (Koşullu Kullanıcı Arayüzü), mevcut geçiş anahtarlarını otomatik doldurma önerileri olarak görüntüler ancak keşfedilebilir kimlik bilgileri (resident keys) gerektirir ve tüm işletim sistemi ile tarayıcı kombinasyonlarında desteklenmez.
  • Relying Party ID (rpID), bir geçiş anahtarını bir alana (domain) bağlar: kimlik doğrulama yalnızca URL tam olarak eşleştiğinde veya rpID'nin public-suffix olmayan bir alt alan adı olduğunda başarılı olur.
  • Geçiş anahtarları, anahtar oluşturmak için COSE algoritmaları kullanır ve kullanılan belirli algoritma, attestation nesnesinin parsedCredentialPublicKey niteliğine kaydedilir.

1. WebAuthn Törenleri (Ceremonies)#

Geçiş anahtarlarıyla kimlik doğrulama, kayıt (diğer adıyla attestation aşaması) ve giriş (diğer adıyla assertion aşaması) olmak üzere iki sürece (törenlere) dayanır.
Her aşama, sunucu tarafından oluşturulan, kimlik doğrulayıcı tarafından imzalanan ve kullanıcıyı doğrulamak için WebAuthn sunucusuna geri gönderilen rastgele bir challenge gerektirir.

Debugger Icon

Passkeys Debugger içinde passkey akışlarını deneyin.

Ücretsiz dene

1.1 Kayıt (Attestation)#

Kayıt töreni iki ana nesne kullanır: PublicKeyCredentialCreationOptions ve attestation.

1.2 Giriş (Assertion)#

Giriş töreni iki ana nesne kullanır: PublicKeyCredentialRequestOptions ve assertion.

StateOfPasskeys Icon

Kaç kişinin gerçekten passkeys kullandığını görün.

Adoption verilerini gör

2. Önemli Nesneler#

Geçiş anahtarlarıyla kayıt ve giriş için dört ana nesne vardır:

  • PublicKeyCredentialCreationOptions
  • PublicKeyCredentialRequestOptions
  • attestation
  • assertion

Bu bölüm ayrıca PublicKeyCredentialCreationOptions içinde kullanılan authenticatorSelection nesnesini de açıklamaktadır.

Igor Gjorgjioski Testimonial

Igor Gjorgjioski

Head of Digital Channels & Platform Enablement, VicRoads

We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.

See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.

Read the case study

2.1 Public Key Credential Creation Options#

PublicKeyCredentialCreationOptions, attestation (Kayıt) aşamasının merkez nesnesidir. WebAuthn sunucusu tarafından oluşturulur ve döndürülür.

{ "PublicKeyCredentialCreationOptions": { "rp": { "id": "passkeys.eu", "name": "Corbado Passkeys Demo" }, "user": { "displayName": "john.doe", "id": "dXNyLZ….DU10Tc", "name": "john@doe.com" }, "challenge": "888fix4Bus...pHHr3Y", "pubKeyCredParams": [ { "alg": -7, "type": "public-key" }, { "alg": -257, "type": "public-key" } ], "excludeCredentials": [], "authenticatorSelection": { "authenticatorAttachment": "platform", "residentKey": "required", "userVerification": "required" }, "attestation": "none", "extensions": {} } }

Nesne şu nitelikleri içerir:

  • rp: Relying Party'yi (= kullanıcının kimliğini doğrulamak isteyen sunucu) tanımlar, 4.2 Relying Party ID (rpID) bölümüne bakın.
  • user: Attestation talep eden kullanıcı hesabı hakkında veri içerir. ID, kişisel bilgi içermemesi gereken, Relying Party tarafından seçilen bir bayt dizisidir. Bunun yerine kullanıcı adı veya e-posta adresi name veya displayName niteliğine kaydedilir. Bunun hakkında daha fazlasını 4.1 Veritabanı Şeması bölümünde okuyun.
  • challenge: Kimlik doğrulayıcı tarafından imzalanması gereken, rastgele oluşturulmuş base64URL kodlu BufferSource.
  • pubKeyCredParams: Oluşturulacak kimlik bilgisinin belirtilmiş nitelikleri, genellikle desteklenen algoritma(lar).
  • timeout: İstemcinin çağrının tamamlanmasını beklemesi için milisaniye cinsinden isteğe bağlı süre.
  • excludeCredentials: Bir cihazda birden fazla geçiş anahtarı oluşturulmasını sınırlamak için isteğe bağlı kimlik bilgileri listesi.
  • authenticatorSelection: Yöntem için kullanılan kimlik doğrulayıcının isteğe bağlı seçimi, örn. bir residentKey'in gerekli olup olmadığı. 2.5 authenticatorSelection bölümüne bakın.
  • attestation: Attestation nesnesinin belirli bir biçimde Relying Party'ye geçirilmesini talep etmek için kullanılabilir. Olası değerler none (varsayılan), indirect, direct ve enterprise'dır.
  • extensions: Belirli dönüş değerleri gibi ek işlemler için isteğe bağlı istek(ler). Örn.
    • credProbs oluşturulan kimlik bilgisinin keşfedilebilir olup olmadığı hakkında bilgi ister
    • prf, Relying Party'nin bir kimlik bilgisiyle ilişkili sözde rastgele işlevden (PRF) gelen çıktıları kullanmasına olanak tanır
Substack Icon

Son haberler için Passkeys Substack'e abone olun.

Abone ol

2.2 Public Key Credential Request Options#

PublicKeyCredentialRequestOptions, assertion (Giriş) aşamasının merkez nesnesidir. WebAuthn sunucusu tarafından oluşturulur ve döndürülür.

{ "publicKeyCredentialRequestOptions": { "challenge": "pT7HMA-…dFPHk", "timeout": 500, "rpId": "passkeys.eu", "userVerification": "preferred", "allowCredentials": [], "extensions": [] } }

Nesne şu nitelikleri içerir:

  • challenge, timeout, extensions: yukarıya bakın.
  • rpId: Assertion isteği için Relying Party'nin tanımlayıcısı, 4.2 Relying Party ID (rpID) bölümüne bakın.
  • allowCredentials: Arayanın tercihini azalan sırada belirten, kimlik doğrulama için izin verilen isteğe bağlı kimlik bilgileri listesi. Bu liste PublicKeyCredentialDescriptors ile doldurulur.
  • userVerification: İşlem sırasında kullanıcı doğrulama gereksinimlerini belirtmek için isteğe bağlı değer. Olası değerler preferred (varsayılan), required veya discouraged'dır.

2.3 Attestation#

Attestation / Kayıt Töreni sırasında, Kimlik Doğrulayıcı bu Kayıt Yanıtını döndürür. Bunu Geçiş Anahtarı Hata Ayıklayıcı (Passkeys Debugger) üzerinden kendiniz de deneyebilirsiniz.

{ "authenticatorAttachment": "platform", "id": "JKZbixUfKN_aZtimefYT-OjH5dw", "rawId": "JKZbixUfKN_aZtimefYT-OjH5dw", "response": { "attestationObject": { "fmt": "none", "attStmt": {}, "authData": { "rpIdHash": "PpZrl-Wqt-OFfBpyy2SraN1m7LT0GZORwGA7-6ujYkM", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": false }, "counter": 0, "aaguid": { "raw": "fbfc3007-154e-4ecc-8c0b-6e020557d7bd", "name": "iCloud Keychain" }, "credentialID": "JKZbixUfKN_aZtimefYT-OjH5dw", "credentialPublicKey": "pQECAyYgASFYIPWLalDzyxIDmAADvfK8iNM5To50kh7TyPH-teEz8RMdIlgg3D7bPIWQJ8z-WFn3zdYZzJw9c7mhPdmflQqD9vV7efA", "parsedCredentialPublicKey": { "keyType": "EC2 (2)", "algorithm": "ES256 (-7)", "curve": 1, "x": "9YtqUPPLEgOYAAO98ryI0zlOjnSSHtPI8f614TPxEx0", "y": "3D7bPIWQJ8z-WFn3zdYZzJw9c7mhPdmflQqD9vV7efA" } } }, "clientDataJSON": { "type": "webauthn.create", "challenge": "k2p6f-upzP_hc6NZvmMAxiI0VSTeQIeXXVRGW62LTj0", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }, "transports": ["hybrid", "internal"], "authenticatorData": "PpZrl-Wqt-OFfBpyy2SraN1m7LT0GZORwGA7-6ujYkNdAAAAAPv8MAcVTk7MjAtuAgVX170AFCSmW4sVHyjf2mbYpnn2E_jox-XcpQECAyYgASFYIPWLalDzyxIDmAADvfK8iNM5To50kh7TyPH-teEz8RMdIlgg3D7bPIWQJ8z-WFn3zdYZzJw9c7mhPdmflQqD9vV7efA", "publicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9YtqUPPLEgOYAAO98ryI0zlOjnSSHtPI8f614TPxEx3cPts8hZAnzP5YWffN1hnMnD1zuaE92Z-VCoP29Xt58A", "publicKeyAlgorithm": -7 }, "type": "public-key", "clientExtensionResults": {} }

attestation, attestationObject, algorithm ve transport bayrakları gibi bazı önemli bileşenler içerir.

2.3.1 attestationObject#

W3C'nin Webauthn spesifikasyonundan alınmıştır

attestationObject, yeni oluşturulan kimlik bilgileri, ortak anahtar (public key) ve diğer ilgili veriler hakkında bilgi içeren CBOR kodlu bir nesnedir:

  • fmt geçiş anahtarları için genellikle "none" olarak değerlendirilir
  • attStmt geçiş anahtarları için boştur ve diğer kimlik doğrulayıcılar, örn. donanım güvenlik anahtarı için doldurulur
  • authData, aşağıdaki verileri içeren bir değer arabelleğidir:

Uzantılar (extensions) hakkında daha fazla bilgi edinin.

algorithm#

Geçiş anahtarları, attestation nesnesindeki parsedCredentialPublicKey'in algorithm niteliğinde kullanılan algoritmayı belirten COSE algoritmaları ile oluşturulur.
İşte en ilgili COSE algoritmalarına bir genel bakış:

2.3.2 transport#

transports özelliği, bir kimlik doğrulayıcının bir istemciyle iletişim kurabileceği mekanizmaları gösterir. Bazı yaygın, örnek değer kombinasyonları şunlardır:

  • "transports": ["internal","hybrid"]: Geçiş anahtarları, platform kimlik doğrulayıcıdan (örn. Face ID, Touch ID, Windows Hello) veya cihazlar arası kimlik doğrulama yoluyla (QR kodu ve Bluetooth kullanarak) kullanılabilir.
  • "transports": ["internal"]: Geçiş anahtarları yalnızca platform kimlik doğrulayıcıdan (örn. Face ID, Touch ID, Windows Hello) kullanılabilir
  • Hiçbir "transports" özelliği ayarlanmamış: hiçbir belirti vermeyen varsayılan davranış

2.4 Assertion#

Assertion / Giriş Töreni sırasında, Kimlik Doğrulayıcı bu Giriş Yanıtını döndürür. Bunu Geçiş Anahtarı Hata Ayıklayıcı (Passkeys Debugger) üzerinden kendiniz de deneyebilirsiniz.

{ "id": "JKZbixUfKN_aZtimefYT-OjH5dw", "rawId": "JKZbixUfKN_aZtimefYT-OjH5dw", "type": "public-key", "authenticatorAttachment": "platform", "response": { "authenticatorData": { "rpIdHash": "PpZrl-Wqt-OFfBpyy2SraN1m7LT0GZORwGA7-6ujYkM", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": false, "extensionData": false }, "counter": 0 }, "clientDataJSON": { "type": "webauthn.get", "challenge": "GCVkITWbe2l2dttsn_DgJYvH9QPHPDo0ygWgcgI6B7U", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false, "other_keys_can_be_added_here": "do not compare clientDataJSON against a template. See https://goo.gl/yabPex" }, "signature": "MEQCIA-orC8N2KKWOxyY17BWP8lB-Be5to9btXRnJZf2SLhXAiBGxJe5Eu5LwOTbsyzAYmIXHOhlC3pN7s7Q1fRLvEW57g", "userHandle": "_FKz1uwqmR_3yGq6hJntzoIFwFC_d1u_53YRELh0KlE" } }

assertion, bayraklar, imza ve userHandle gibi bazı önemli bileşenleri içerir.

2.4.1 flags#

İşte en ilgili bayraklara ve bunların kombinasyonlarına bir genel bakış:

2.4.2 signature#

signature (imza), giriş yapmaya çalışan kullanıcının gerçekten özel anahtara sahip olduğunu doğrulamak için kullanılır. İmza, authenticatorData ve clientDataHash'in (yani ClientDataJSON'ın SHA-256 sürümü) birleştirilmesi ve sonucun özel anahtarla (kimlik doğrulayıcıda) imzalanmasıyla oluşturulur. Ortak anahtarla doğrulamak için, aynı şekilde authenticatorData ve clientDataHash'i birleştiririz. Doğrulama sonucu true dönerse, kimlik doğrulama başarılıdır.

2.4.3 userHandle#

userHandle gerçek user_id'dir. user_id hakkında daha fazla bilgiyi 4.1 Veritabanı Şeması bölümünde okuyabilirsiniz.

2.5 authenticatorSelection#

authenticatorSelection nesnesi, sunucunun kimlik doğrulayıcı ve kimlik bilgisi oluşturma için aşağıdaki değerlerle ayarları dikte etmesine olanak tanır:

2.5.1 authenticatorAttachment#

  • Platform: Kimlik doğrulayıcı, istemcinin platformuna bağlıdır ve bu nedenle çıkarılamaz.
  • Cross-platform: Kimlik doğrulayıcı istemcinin platformuna bağlı değildir ve birden fazla cihazda kullanılabilir.

2.5.2 residentKey#

  • Required: Kimlik doğrulayıcı bir resident key oluşturmalıdır (mümkün değilse işlem başarısız olmalıdır).
  • Preferred: Kimlik doğrulayıcı bir resident key oluşturmaya çalışmalıdır (mümkün değilse bir non-resident key oluşturmalıdır).
  • Discouraged: Kimlik doğrulayıcı bir non-resident key oluşturmalıdır (mümkün değilse işlem başarısız olmalıdır).

Resident Keys (Keşfedilebilir Kimlik Bilgisi olarak da adlandırılır): Resident key'ler (yerleşik anahtarlar) kimlik doğrulayıcıda depolanır ve kimlik doğrulama sırasında alınır. Bu sayede istemci olası anahtarların bir listesini keşfedebilir, bu nedenle [Conditional UI](/blog/user-transition-passkeys-> conditional-ui) resident key'ler gerektirir. Non-Resident Keys (Keşfedilemeyen Kimlik Bilgisi olarak da adlandırılır): Non-resident key'ler söz konusu olduğunda, kimlik bilgisi kimliği (credential ID) sunucuda depolanır ve kimlik doğrulama sırasında sağlanır. Kimlik bilgisi kimliği, iç yapısı uygulamaya özgü olan opak bir tanımlayıcıdır; kimlik doğrulayıcılar özel anahtarları doğrudan depolayabilir, şifrelenmiş anahtar sarma kullanabilir veya dahili sırlardan anahtarlar türetebilir. Kesin mekanizma kimlik doğrulayıcı uygulamasına göre değişir.

2.5.3 userVerification#

  • Required: İşlem kullanıcıyı doğrulamalıdır.
  • Preferred: İşlem kullanıcıyı doğrulamalıdır, ancak onsuz da devam edebilir (standart seçenek)
  • Discouraged: İşlem kullanıcıyı doğrulamamalıdır.

Uyarı: "Preferred" olarak ayarlanırsa, kullanıcı veya cihazı kimlik doğrulama sürecinde kullanıcı doğrulamasını atlayabilir (daha fazlasını bu makalede okuyun).

3. Conditional UI (Koşullu Kullanıcı Arayüzü)#

Conditional UI (geçiş anahtarı otomatik doldurma), bir kullanıcının Relying Party'ye kayıtlı bir resident key'i olduğunda, mevcut geçiş anahtarlarını kullanıcı için bir seçim açılır menüsünde görüntüler. Geçiş anahtarlarının kullanılabilirliğini artırır, ancak ek geliştirme çabaları gerektirir ve tüm işletim sistemi / tarayıcı kombinasyonları için mevcut değildir.

3.1 Conditional UI ile Giriş Akışı#

Normal bir giriş gibi, Conditional UI da PublicKeyCredentialRequestOptions ve assertion nesnelerini kullanır

3.2 Cihaz Uyumluluğu#

Conditional UI, işletim sistemleri ve tarayıcıların tüm kombinasyonlarında (henüz) mevcut değildir. İşte mevcut tarayıcı kapsamına bir genel bakış (Mart 2024):

Güncel bir genel bakış için bu web sitesine bakın.

3.3 Kod Örnekleri#

3.3.1 Conditional UI Yöntemi#

Bir Conditional UI yöntemi için tam, minimalist bir kod şu şekildedir:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Conditional UI</title> </head> <body> <input type="text" id="username" autocomplete="username webauthn" /> <script> async function passkeyLogin() { try { // retrieve the request options (incl. the challenge) from the WebAuthn server let options = await WebAuthnClient.getPublicKeyRequestOptions(); const credential = await navigator.credentials.get({ publicKey: options.publicKeyCredentialRequestOptions, mediation: "conditional", }); const userData = await WebAuthnClient.sendSignedChallenge(credential); window.location.href = "/logged-in"; } catch (error) { console.log(error); } } passkeyLogin(); </script> </body> </html>

3.3.2 Tarayıcı Uyumluluk Kontrolü#

Conditional UI yalnızca resident keys / keşfedilebilir kimlik bilgileriyle çalışır
Conditional UI girişini başlatmak için farklı bir sunucu uç noktası sağlanması önerilir.
İstemcinin birden fazla gereksinimi karşılaması gerekir:

  • Tarayıcının Conditional UI'yi desteklemesi gerekir (3.2 Cihaz Uyumluluğu bölümüne bakın).
  • JavaScript etkinleştirilmelidir ve web sayfası bir HTML giriş alanı sağlamalıdır.
  • Zaman aşımı parametreleri dikkate alınmamalıdır

Hataları önlemek için, sunucu ilk olarak bu işlevle istemcilerin kullanılabilirliğini test etmelidir: Gerçek trafikte, tespit ve yaşam döngüsü sorunları genellikle NotAllowedError veya AbortError olarak ortaya çıkar. Yerel Credential Manager geçiş anahtarı hataları dahil olmak üzere, beklenen ve beklenmeyen sınıflandırması için bu WebAuthn hataları kılavuzunu kullanın.

// source: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable#examples // Availability of `window.PublicKeyCredential` means WebAuthn is usable. if (window.PublicKeyCredential && PublicKeyCredential.isConditionalMediationAvailable) { // Check if conditional mediation is available. const isCMA = await PublicKeyCredential.isConditionalMediationAvailable(); if (isCMA) { // Call WebAuthn authentication start endpoint let options = await WebAuthnClient.getPublicKeyRequestOptions(); const credential = await navigator.credentials.get({ publicKey: options.publicKeyCredentialRequestOptions, mediation: "conditional", }); /* ... */ } }

3.3.3 Giriş Alanlarında Otomatik Doldurma Token'ı (Autocomplete Token)#

Giriş alanı, istemciye geçiş anahtarlarını devam eden isteğe doldurmasını işaret eden bir HTML otomatik doldurma token'ı almalıdır. Geçiş anahtarlarına ek olarak, otomatik doldurma token'ları, kullanıcı adları ve şifreler gibi mevcut token'larla eşleştirilebilir:

  • autocomplete="username webauthn": Geçiş anahtarlarını görüntülemenin yanı sıra, bu aynı zamanda kullanıcı adı otomatik doldurmayı da önerir.
  • autocomplete="current-password webauthn": Geçiş anahtarlarını görüntülemenin yanı sıra, bu ayrıca şifre otomatik doldurma için istemde bulunur.
<label for="name">Username:</label> <input type="text" name="name" autocomplete="username webauthn" /> <label for="password">Password:</label> <input type="password" name="password" autocomplete="current-password webauthn" />

4. WebAuthn Sunucusu#

4.1 Veritabanı Şeması#

WebAuthn sunucuları için zorunlu veya standartlaştırılmış bir veritabanı şeması yoktur. Ancak, bu örnek veritabanı şeması, gerekli bilgileri depolamak ve bir WebAuthn sunucusunun tüm işlevlerini sağlamak için kullanılabilir:

Kalın yazılmış nitelikler, minimum uygulanabilir bir gerçekleştirim için zorunluyken, diğerleri yalnızca isteğe bağlı ancak faydalı özellikler için gereklidir.

4.1.1 Kimlik doğrulama ile ilgili veriler#

  • Kimlik Bilgisi Kimliği (Credential ID): Bu, bir geçiş anahtarının kaydı sırasında kimlik doğrulayıcı tarafından oluşturulan benzersiz bir kimliktir. Geçiş anahtarıyla ilişkili gerçek kullanıcı hesabını aramak için kullanılmalıdır. Ek olarak, kimlik doğrulaması için kullanılan hesabı doğrulamak üzere userHandle (user_id'den gelen) karşılaştırılmalıdır. Zaman içinde değişebileceğinden, karşılaştırma için user.name niteliğini kullanmayın.
  • Kullanıcı Kimliği (User ID / user_id): Sistemlerinde bir kullanıcı hesabını temsil etmek için Relying Party tarafından belirtilen benzersiz kimlik. assertion nesnesi içinde userHandle olarak döndürülür.

4.1.2 Geçiş anahtarlarının görüntülenmesi ve seçimi için meta veriler:#

  • Kullanıcı Görünen Adı (user.displayName): Genellikle kullanıcının tam adı olan kullanıcı dostu, okunabilir ad. Kullanıcıya gösterilir, ancak kimlik doğrulama sırasında kullanılmaz.

  • Kullanıcı Adı (user.name): Genellikle bir e-posta adresi veya bir kullanıcı adı olan benzersiz ve okunabilir ad. Kullanıcıya gösterilebilir, ancak kimlik doğrulama sırasında kullanılmaz.

4.2 Relying Party ID (rpId)#

Relying Party ID (rpID), geçiş anahtarında depolanan ve geçiş anahtarının yalnızca doğru alan (tarayıcı URL'si, yerel uygulamalar için bu makaleye bakın) için çalışmasını sağlayan bir alandır (domain). Kimlik doğrulama sırasında rpID, tarayıcı URL'sine karşı kontrol edilir ve yalnızca şu iki durumda izin verilir:

  1. URL, tam olarak rpId ile eşleşiyorsa VEYA
  2. URL, rpId ile eşleşen bir alt alan adıdır ve üst alan Public Suffix List'te değilse

İşte izin verilen ve verilmeyen kombinasyonlar için örnekler:

5. Faydalı Web Siteleri ve Araçlar#

Geçiş anahtarlarını uygulamak için kullanışlı araçların ve web sitelerinin bir listesi aşağıdadır.

Geçiş anahtarı UX'inizi teknik uygulamanın ötesinde optimize etmeye yönelik stratejiler için, geçiş anahtarı oluşturma en iyi uygulamaları ve geçiş anahtarı girişi en iyi uygulamaları kılavuzlarımıza bakın.

Herhangi bir uygulamaya sadece birkaç satır kodla geçiş anahtarları uygulamak istiyorsanız, Corbado Complete (yeni uygulamalar için) veya Corbado Connect (mevcut uygulamalar için) de kullanabilirsiniz.

Corbado

Corbado Hakkında

Corbado, büyük ölçekte tüketici kimlik doğrulaması yöneten CIAM ekipleri için Authentication Intelligence Platform'tur. IDP loglarının ve genel analytics araçlarının göremediğini görmenizi sağlarız: hangi cihazların, OS sürümlerinin, tarayıcıların ve credential manager'ların passkey desteklediğini; kayıtların neden girişe dönüşmediğini; WebAuthn akışının nerede başarısız olduğunu; bir OS ya da tarayıcı güncellemesinin girişi sessizce ne zaman bozduğunu — hem de Okta, Auth0, Ping, Cognito veya kendi IDP'nizi değiştirmeden. İki ürün: Corbado Observe, passkey'ler ve diğer tüm giriş yöntemleri için observability sağlar. Corbado Connect, analytics entegre managed passkey'ler sunar (IDP'nizin yanında). VicRoads, Corbado ile 5M+ kullanıcı için passkey çalıştırıyor (%80+ passkey aktivasyonu). Bir Passkey uzmanıyla görüşün

Sıkça Sorulan Sorular#

Web uygulamamda geçiş anahtarı otomatik doldurma (autofill) için Conditional UI'yi nasıl uygularım?#

Conditional UI, kimlik doğrulamayı başlatmadan önce PublicKeyCredential.isConditionalMediationAvailable() aracılığıyla tarayıcı desteğini kontrol etmeyi gerektirir. Giriş alanı autocomplete="username webauthn" HTML token'ını içermeli ve kullanıcının kayıtlı bir resident key'i (keşfedilebilir kimlik bilgisi) olmalıdır. Conditional UI giriş akışını işlemek için ayrı bir sunucu uç noktası önerilir.

WebAuthn kimlik doğrulamasını desteklemek için veritabanımda saklamam gereken minimum veri nedir?#

En azından, kayıt sırasında kimlik doğrulayıcı tarafından oluşturulan Kimlik Bilgisi Kimliği (Credential ID) ile assertion nesnesinde userHandle olarak döndürülen Kullanıcı Kimliğini (user_id) saklayın. İlgili kullanıcı hesabını aramak için Kimlik Bilgisi Kimliğini kullanın ve kimlik doğrulamasını doğrulamak için userHandle'ı karşılaştırın. Zaman içinde değişebileceğinden, karşılaştırma için user.name kullanmaktan kaçının.

WebAuthn'de resident key'ler (yerleşik anahtarlar) ile non-resident key'ler (yerleşik olmayan anahtarlar) arasındaki fark nedir?#

Resident key'ler (keşfedilebilir kimlik bilgileri) doğrudan kimlik doğrulayıcının üzerinde saklanır ve kimlik doğrulama sırasında alınır; bu, Conditional UI'nin çalışması için gereklidir. Non-resident key'ler ise kimlik bilgisi kimliğini sunucuda depolar ve kimlik doğrulama sırasında kimlik doğrulayıcıya gönderir. authenticatorSelection içindeki residentKey alanı bu davranışı "required", "preferred" veya "discouraged" değerleriyle kontrol eder.

userVerification nasıl çalışır ve bunu preferred (tercih edilen) olarak ayarlamanın riskleri nelerdir?#

userVerification alanı, kimlik doğrulayıcının oturum açma sırasında kullanıcıyı doğrulamasının gerekip gerekmediğini kontrol eder ve "required", "preferred" (varsayılan) veya "discouraged" değerlerini kabul eder. "preferred" olarak ayarlandığında, kullanıcı veya cihazı, kimlik doğrulama işlemi sırasında doğrulamayı tamamen atlayabilir ve potansiyel olarak güvenliği zayıflatabilir. "required" olarak ayarlamak, kimlik doğrulama tamamlanmadan önce doğrulamanın her zaman gerçekleşmesini sağlar.

Corbado’nun passkey geçiş sürecinize ve mevcut authentication stack’inize nasıl uyduğunu görün.

Console’u keşfet

Bu makaleyi paylaş


LinkedInTwitterFacebook