Mevcut şifre kullanıcılarını da desteklerken geçiş anahtarlarından yararlanan bir oturum açma deneyimi oluşturun.
Bu kılavuzda, kullanıcıların parolaların yanı sıra geçiş anahtarlarıyla oturum açmasına izin vermek için form otomatik doldurma özelliğinin nasıl kullanılacağı açıklanmaktadır. Form otomatik doldurma özelliğini kullanmak, birleşik bir oturum açma deneyimi oluşturarak şifrelerden daha güvenli ve kullanıcı dostu geçiş anahtarı kimlik doğrulama yöntemine geçişi kolaylaştırır.
Mevcut oturum açma formlarınızda hem geçiş anahtarı hem de şifre kullanıcılarını en az sorunla desteklemek için WebAuthn'nin koşullu kullanıcı arayüzünü nasıl uygulayacağınızı öğrenin.
Geçiş anahtarıyla oturum açmak için neden form otomatik doldurma özelliğini kullanmalısınız?
Geçiş anahtarları, kullanıcıların parmak izlerini, yüzlerini veya cihaz PIN'lerini kullanarak web sitelerinde oturum açmasına olanak tanır.
Tüm kullanıcılar geçiş anahtarı kullanıyorsa kimlik doğrulama akışı tek bir oturum açma düğmesi olabilir. Kullanıcı, düğmeye dokunarak hesabı doğrudan ekran kilidiyle doğrulayabilir ve oturum açabilir.
Ancak şifrelerden geçiş anahtarlarına geçiş bazı zorluklar yaratır. Web siteleri bu süre zarfında hem şifre hem de geçiş anahtarı kullanıcılarını desteklemelidir. Kullanıcıların hangi sitelerde geçiş anahtarı kullanıldığını hatırlamasını beklemek ve onlardan oturum açma yöntemini önceden seçmelerini istemek kötü bir kullanıcı deneyimine yol açar.
Geçiş anahtarları da yeni bir teknoloji olduğundan net bir şekilde açıklanması zor olabilir. Tanıdık otomatik doldurma arayüzünü kullanmak hem geçiş zorluğunu hem de kullanıcıların alışma ihtiyacını gidermeye yardımcı olur.
Koşullu kullanıcı arayüzü kullanma
Hem geçiş anahtarı hem de şifre kullanıcılarını etkili bir şekilde desteklemek için formunuzun otomatik doldurma önerilerine geçiş anahtarlarını ekleyin. Bu yaklaşımda, WebAuthn standardının bir özelliği olan koşullu kullanıcı arayüzü kullanılır.
Kullanıcı, kullanıcı adı giriş alanına odaklandığında otomatik doldurma iletişim kutusu görünür. Bu kutuda, kayıtlı şifrelerin yanı sıra depolanmış geçiş anahtarları önerilir. Kullanıcı, geçiş anahtarı veya şifre seçip oturum açmaya devam edebilir. Geçiş anahtarı seçerse cihazın ekran kilidini kullanır.
Bu sayede kullanıcılar, mevcut oturum açma formuyla web sitenizde oturum açabilir ancak varsa geçiş anahtarlarının ek güvenlik avantajından yararlanabilir.
Geçiş anahtarı kimlik doğrulamasının işleyiş şekli
Geçiş anahtarıyla kimlik doğrulaması yapmak için WebAuthn API'yi kullanırsınız.
Geçiş anahtarı kimlik doğrulama akışındaki dört bileşen şunlardır:
- Arka uç: Genel anahtar dahil olmak üzere kullanıcı hesabı ayrıntılarını depolar.
- Ön uç: Tarayıcıyla iletişim kurar ve arka uçtan gerekli verileri getirir.
- Tarayıcı: JavaScript'inizi çalıştırır ve WebAuthn API ile etkileşimde bulunur.
- Geçiş anahtarı sağlayıcı: Geçiş anahtarını oluşturur ve saklar. Bu genellikle Google Şifre Yöneticisi gibi bir şifre yöneticisi veya güvenlik anahtarıdır.
Geçiş anahtarı kimlik doğrulama süreci şu akışı izler:
- Kullanıcı oturum açma sayfasını ziyaret eder ve ön uç, arka uçtan kimlik doğrulama sorgulaması ister.
- Arka uç, kullanıcı hesabıyla ilişkili bir WebAuthn sorgulaması oluşturup döndürür.
- Ön uç, tarayıcıyı kullanarak kimlik doğrulama başlatmak için
navigator.credentials.get()ile sorgu gönderir. - Tarayıcı, geçiş anahtarı sağlayıcı ile etkileşim kurarak kullanıcıdan bir geçiş anahtarı seçmesini (genellikle oturum açma alanına odaklanarak tetiklenen bir otomatik doldurma iletişim kutusu kullanılarak) ve cihaz ekran kilidini veya biyometriyi kullanarak kimliğini doğrulamasını ister.
- Kullanıcı doğrulama işlemi başarılı olduktan sonra geçiş anahtarı sağlayıcı, sorguya imza atar ve tarayıcı, ortaya çıkan ortak anahtar kimlik bilgisini (imza dahil) ön uca döndürür.
- Ön uç, bu kimlik bilgisini arka uca gönderir.
- Arka uç, kimlik bilgisinin imzasını kullanıcının depolanan ortak anahtarıyla karşılaştırarak doğrular. Doğrulama başarılı olursa arka uç, kullanıcının oturumunu açar.
Form otomatik doldurma özelliğiyle geçiş anahtarıyla kimlik doğrulama
Form otomatik doldurma özelliğini kullanarak geçiş anahtarıyla kimlik doğrulamayı başlatmak için oturum açma sayfası yüklendiğinde koşullu bir WebAuthn get çağrısı yapın. navigator.credentials.get() işlevine yapılan bu çağrı mediation: 'conditional' seçeneğini içerir.
WebAuthn'in
navigator.credentials.get() API'sine yapılan koşullu istek, kullanıcı arayüzünü hemen göstermez. Bunun yerine, kullanıcı, kullanıcı adı alanının otomatik doldurma istemiyle etkileşime girene kadar bekleyen durumda kalır. Kullanıcı bir geçiş anahtarı seçerse tarayıcı, kullanıcıyı oturum açmak için kimlik bilgileriyle bekleyen promise'i yerine getirir ve geleneksel form gönderim işlemini atlar. Kullanıcı bunun yerine bir şifre seçerse söz çözümlenmez ve standart şifreyle oturum açma akışı devam eder. Kullanıcının oturum açmasını sağlamak sayfanın sorumluluğundadır.
Form giriş alanına ek açıklama ekleme
Geçiş anahtarı otomatik doldurma özelliğini etkinleştirmek için formunuzun kullanıcı adı input alanına autocomplete özelliğini ekleyin. Hem username hem de webauthn değerini boşlukla ayrılmış değerler olarak ekleyin.
<input type="text" name="username" autocomplete="username webauthn" autofocus>
Bu alana autofocus eklemek, sayfa yüklendiğinde otomatik doldurma istemini otomatik olarak tetikleyerek kullanılabilir şifreleri ve geçiş anahtarlarını anında gösterir.
Özellik algılama
Koşullu bir WebAuthn API çağrısı yapmadan önce şunları kontrol edin:
- Tarayıcı,
PublicKeyCredentialile WebAuthn'u destekliyor olmalıdır.
- Tarayıcı,
PublicKeyCredential.getClientCapabilities()ile özellik algılamayı destekler.
- Tarayıcı,
conditionalGetile WebAuthn koşullu kullanıcı arayüzünü destekliyor.
Aşağıdaki snippet'te, tarayıcının bu özellikleri destekleyip desteklemediğini nasıl kontrol edebileceğiniz gösterilmektedir:
if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
// Check if conditional mediation is available.
if (capabilities.conditionalGet === true) {
// The browser supports conditional mediation.
}
}
Arka uçtan bilgi getirme
Arka uç, navigator.credentials.get() çağrısını başlatmak için ön uca çeşitli seçenekler sunmalıdır. Bu seçenekler genellikle sunucunuzdaki bir uç noktadan JSON nesnesi olarak alınır.
Seçenekler nesnesindeki temel özellikler şunlardır:
challenge: ArrayBuffer'da sunucu tarafından oluşturulan bir sorgu (genellikle JSON aktarımı için Base64URL olarak kodlanır). Bu, yeniden oynatma saldırılarını önlemek için gereklidir. Sunucunuz her oturum açma denemesi için yeni bir sorgulama oluşturmalı ve kısa bir süre sonra veya deneme başarısız olursa sorgulamayı geçersiz kılmalıdır.allowCredentials: Kimlik bilgisi tanımlayıcıları dizisi. Boş bir dizi iletin. Bu işlem, tarayıcıyı belirtilenrpIdiçin tüm kimlik bilgilerini listelemeye yönlendirir.userVerification: Kullanıcı doğrulamayla ilgili tercihinizi belirtir. Örneğin, cihazda ekran kilidi olmasını zorunlu kılabilirsiniz. Varsayılan ve önerilen değer"preferred"'dır. Olası değerler:"required": Kullanıcı doğrulaması, kimlik doğrulayıcı (ör. PIN veya biyometri) tarafından yapılmalıdır. Doğrulama yapılamazsa işlem başarısız olur."preferred": Kimlik doğrulayıcı, kullanıcı doğrulaması yapmaya çalışır ancak işlem, doğrulama olmadan da başarılı olabilir."discouraged": Kimlik doğrulayıcı, mümkünse kullanıcı doğrulaması yapmaktan kaçınmalıdır.
rpId: Genellikle web sitenizin alan adı (ör.example.com) olan, güvenilen taraf kimliğinizdir. Bu değer, geçiş anahtarı kimlik bilgisi oluşturulurken kullanılanrp.idile tam olarak eşleşmelidir.
Sunucunuz bu seçenekler nesnesini oluşturmalıdır. ArrayBuffer değerleri (ör.
challenge), JSON aktarımı için Base64URL kodlu olmalıdır. Ön uçta, JSON'ı ayrıştırdıktan sonra PublicKeyCredential.parseRequestOptionsFromJSON() kullanarak nesneyi (Base64URL dizelerinin kodunu çözme dahil) navigator.credentials.get()'ün beklediği biçime dönüştürün.
Aşağıdaki kod snippet'inde, geçiş anahtarıyla kimlik doğrulama için gereken bilgilerin nasıl alınacağı ve kodunun nasıl çözüleceği gösterilmektedir.
// Fetch an encoded PubicKeyCredentialRequestOptions from the server.
const _options = await fetch('/webauthn/signinRequest');
// Deserialize and decode the PublicKeyCredentialRequestOptions.
const decoded_options = JSON.parse(_options);
const options = PublicKeyCredential.parseRequestOptionsFromJSON(decoded_options);
...
Kullanıcının kimliğini doğrulamak için conditional işaretini kullanarak WebAuthn API'yi çağırın.
publicKeyCredentialRequestOptions nesnesini (aşağıdaki örnek kodda options olarak adlandırılır) hazırladıktan sonra koşullu geçiş anahtarı kimlik doğrulamasını başlatmak için navigator.credentials.get() işlevini çağırın.
// To abort a WebAuthn call, instantiate an AbortController.
const abortController = new AbortController();
// Invoke WebAuthn to authenticate with a passkey.
const credential = await navigator.credentials.get({
publicKey: options,
signal: abortController.signal,
// Specify 'conditional' to activate conditional UI
mediation: 'conditional'
});
Bu görüşmeyle ilgili temel parametreler:
publicKey: Bu, sunucunuzdan getirdiğiniz ve önceki adımda işlediğinizpublicKeyCredentialRequestOptionsnesnesi (örnekteoptionsolarak adlandırılır) olmalıdır.signal:AbortControllersinyali (ör.abortController.signal) iletmek,get()isteğini programatik olarak iptal etmenize olanak tanır. Bu, başka bir WebAuthn çağrısı başlatmak istediğinizde kullanışlıdır.mediation: 'conditional': Bu, WebAuthn çağrısını koşullu hale getiren önemli bir işarettir. Bu, tarayıcıya modal iletişim kutusunu hemen göstermek yerine otomatik doldurma istemiyle kullanıcı etkileşimini beklemesini söyler.
Döndürülen ortak anahtar kimlik bilgisini RP sunucusuna gönderin.
Kullanıcı bir geçiş anahtarı seçip kimliğini başarıyla doğrularsa (ör. cihazının ekran kilidini kullanarak) navigator.credentials.get() sözü yerine getirilir. Bu işlem, ön ucunuza PublicKeyCredential nesnesi döndürür.
Sözün reddedilmesinin birkaç nedeni olabilir. name nesnesinin Error özelliğini kontrol ederek kodunuzdaki bu hataları gidermeniz gerekir:
NotAllowedError: Kullanıcı işlemi iptal etti veya geçiş anahtarı seçilmedi.AbortError: İşlem, muhtemelen kodunuzunAbortControllerkullanması nedeniyle iptal edildi.- Diğer istisnalar: Beklenmeyen bir hata oluştu. Tarayıcı genellikle kullanıcıya bir hata iletişim kutusu gösterir.
PublicKeyCredential nesnesi çeşitli özellikler içeriyor. Kimlik doğrulama için önemli olan temel özellikler şunlardır:
id: Kimliği doğrulanmış geçiş anahtarı kimlik bilgisinin base64url kodlu kimliği.rawId: Kimlik bilgisinin ArrayBuffer sürümü.response.clientDataJSON: İstemci verilerinin ArrayBuffer'ı. Bu alanda, sunucunuzun doğrulayacağı sorgu ve kaynak gibi bilgiler yer alır.response.authenticatorData: Kimlik doğrulayıcı verilerinin ArrayBuffer'ı. Bu alan, RP kimliği gibi bilgileri içerir.response.signature: İmzayı içeren bir ArrayBuffer. Bu değer, kimlik bilgisinin temelini oluşturur ve sunucunuzun, kimlik bilgisi için depolanan ortak anahtarı kullanarak bu imzayı doğrulaması gerekir .response.userHandle: Geçiş anahtarı kaydı sırasında sağlanan kullanıcı kimliğini içeren bir ArrayBuffer.authenticatorAttachment: Kimlik doğrulayıcının istemci cihazın (platform) bir parçası mı yoksa harici (cross-platform) mi olduğunu gösterir.cross-platformekleme, kullanıcı telefonda oturum açtıysa gerçekleşebilir. Bu gibi durumlarda, gelecekte kolaylık sağlamak için kullanıcılardan mevcut cihazda geçiş anahtarı oluşturmalarını isteyebilirsiniz.type: Bu alan her zaman"public-key"olarak ayarlanır.
Bu PublicKeyCredential nesnesini arka uçunuza göndermek için önce .toJSON() yöntemini çağırın. Bu yöntem, kimlik bilgilerinin JSON'a dönüştürülebilir bir sürümünü oluşturur. Bu sürüm, ArrayBuffer özelliklerinin (ör. rawId, clientDataJSON, authenticatorData, signature ve userHandle) Base64URL kodlu dizelere dönüştürülmesini doğru şekilde işler. Ardından, bu nesneyi dizeye dönüştürmek ve isteğinizin gövdesinde sunucuya göndermek için JSON.stringify() kullanın.
...
// Encode and serialize the PublicKeyCredential.
const _result = credential.toJSON();
const result = JSON.stringify(_result);
// Encode and send the credential to the server for verification.
const response = await fetch('/webauthn/signinResponse', {
method: 'post',
credentials: 'same-origin',
body: result
});
İmzayı doğrulama
Arka uç sunucunuz, ortak anahtar kimlik bilgisini aldığında bunun gerçekliğini doğrulamalıdır. Bu kapsamda yapabileceğiniz işlemler:
- Kimlik bilgisi verilerini ayrıştırma
- Kimlik bilgisiyle
idilişkili depolanmış ortak anahtar aranır. - Alınan
signature, depolanan ortak anahtara karşı doğrulanır. - Diğer verileri (ör. sorgu ve kaynak) doğrulama
Bu kriptografik işlemleri güvenli bir şekilde gerçekleştirmek için sunucu tarafı FIDO/WebAuthn kitaplığı kullanmanızı öneririz. Açık kaynak kitaplıklarını awesome-webauthn GitHub deposunda bulabilirsiniz.
İmza ve diğer tüm onaylar geçerliyse sunucu, kullanıcının oturumunu açabilir. Ayrıntılı sunucu tarafı doğrulama adımları için Sunucu tarafı geçiş anahtarı kimlik doğrulaması başlıklı makaleyi inceleyin.
Eşleşen kimlik bilgileri arka uçta bulunmuyorsa sinyal verin.
Arka uç sunucunuz oturum açma sırasında eşleşen kimliğe sahip bir kimlik bilgisi bulamazsa kullanıcı, bu geçiş anahtarını daha önce sunucunuzdan silmiş ancak geçiş anahtarı sağlayıcısından silmemiş olabilir. Geçiş anahtarı sağlayıcı, sitenizde artık çalışmayan bir geçiş anahtarı önermeye devam ederse bu uyuşmazlık kafa karıştırıcı bir kullanıcı deneyimine yol açabilir. Bu durumu düzeltmek için geçiş anahtarı sağlayıcıya, üst öğesi olmayan geçiş anahtarını kaldırması gerektiğini bildirmeniz gerekir.
Belirtilen kimlik bilgisinin kaldırıldığını veya mevcut olmadığını geçiş anahtarı sağlayıcıya bildirmek için Webauthn Signal API'nin bir parçası olan PublicKeyCredential.signalUnknownCredential() yöntemini kullanabilirsiniz. Sunucunuz, sunulan kimlik bilgisinin bilinmediğini belirtiyorsa (örneğin, 404 gibi belirli bir HTTP durum koduyla) istemci tarafında bu statik yöntemi çağırın. Bu yönteme RP kimliğini ve bilinmeyen kimlik bilgisi kimliğini sağlayın. Geçiş anahtarı sağlayıcı, sinyali destekliyorsa geçiş anahtarını kaldırmalıdır.
// Detect authentication failure due to lack of the credential
if (response.status === 404) {
// Feature detection
if (PublicKeyCredential.signalUnknownCredential) {
await PublicKeyCredential.signalUnknownCredential({
rpId: "example.com",
credentialId: "vI0qOggiE3OT01ZRWBYz5l4MEgU0c7PmAA" // base64url encoded credential ID
});
} else {
// Encourage the user to delete the passkey from the password manager nevertheless.
...
}
}
Kimlik doğrulama işleminden sonra
Kullanıcının oturum açma şekline bağlı olarak farklı akışlar öneririz.
Kullanıcı geçiş anahtarı olmadan oturum açtıysa
Kullanıcı, web sitenizde geçiş anahtarı olmadan oturum açtıysa söz konusu hesap için veya mevcut cihazında kayıtlı bir geçiş anahtarı olmayabilir. Bu, geçiş anahtarı oluşturmayı teşvik etmek için uygun bir zamandır. Aşağıdaki yaklaşımları göz önünde bulundurun:
- Şifreleri geçiş anahtarlarına yükseltme: Başarılı bir şifreyle oturum açma işleminden sonra tarayıcının kullanıcı için otomatik olarak geçiş anahtarı oluşturmasına olanak tanıyan bir WebAuthn özelliği olan koşullu oluşturma'yı kullanın. Bu, oluşturma sürecini basitleştirerek geçiş anahtarı kullanımını önemli ölçüde artırabilir. Nasıl çalıştığını ve Kullanıcıların geçiş anahtarlarını daha sorunsuz bir şekilde benimsemesine yardımcı olma başlıklı makaleden nasıl uygulayacağınızı öğrenin.
- Geçiş anahtarı oluşturma işlemini manuel olarak isteme: Kullanıcıları geçiş anahtarı oluşturmaya teşvik edin. Bu, kullanıcının çok öğeli kimlik doğrulama (MFA) gibi daha karmaşık bir oturum açma işlemini tamamlamasından sonra etkili olabilir. Ancak kullanıcı deneyimini olumsuz etkileyebilecek aşırı istemlerden kaçının."
Kullanıcıları geçiş anahtarı oluşturmaya nasıl teşvik edebileceğinizi ve diğer iyi uygulamaları öğrenmek için Kullanıcılara geçiş anahtarları hakkında bilgi verme başlıklı makaledeki örneklere bakın.
Kullanıcı geçiş anahtarıyla oturum açtıysa
Kullanıcılar şifre anahtarıyla başarılı bir şekilde oturum açtıktan sonra, deneyimlerini daha da iyileştirmek ve hesap tutarlılığını korumak için çeşitli fırsatlarınız olur.
Cihazlar arası kimlik doğrulamanın ardından yeni geçiş anahtarı oluşturmayı teşvik etme
Kullanıcı, cihazlar arası bir mekanizma (ör. telefonla QR kodu tarama) kullanarak geçiş anahtarıyla oturum açarsa kullandığı geçiş anahtarı, oturum açtığı cihazda yerel olarak depolanmayabilir. Bunun nedeni şu durumlar olabilir:
- Geçiş anahtarı vardır ancak oturum açma işletim sistemini veya tarayıcıyı desteklemeyen bir geçiş anahtarı sağlayıcısı kullanılır.
- Oturum açma cihazında geçiş anahtarı sağlayıcısına erişimini kaybetmiş ancak başka bir cihazda geçiş anahtarı kullanmaya devam edebilir.
Bu durumda, kullanıcıdan mevcut cihazda yeni bir geçiş anahtarı oluşturmasını isteyebilirsiniz. Bu sayede, gelecekte cihazlar arası oturum açma işlemini tekrar etmeleri gerekmez. Kullanıcının cihazlar arası geçiş anahtarı kullanarak oturum açıp açmadığını belirlemek için kimlik bilgisinin authenticatorAttachment özelliğini kontrol edin. Değeri "cross-platform" ise cihazlar arası kimlik doğrulama yapıldığını gösterir. Bu durumda, yeni bir geçiş anahtarı oluşturmanın kolaylığını açıklayın ve oluşturma sürecinde onlara rehberlik edin.
Sinyalleri kullanarak geçiş anahtarı ayrıntılarını sağlayıcıyla senkronize etme
Tutarlılık ve daha iyi bir kullanıcı deneyimi sağlamak için Relying Party'niz (RP), kimlik bilgileri ve kullanıcı bilgileriyle ilgili güncellemeleri geçiş anahtarı sağlayıcıya iletmek için WebAuthn Signals API'yi kullanabilir.
Örneğin, kullanıcının geçiş anahtarlarının listesini doğru tutmak için arka uçtaki kimlik bilgilerini senkronize edin. Şifre anahtarı sağlayıcıların gereksiz şifre anahtarlarını kaldırabilmesi için bir şifre anahtarının artık mevcut olmadığını bildirebilirsiniz.
Benzer şekilde, kullanıcı hizmetinizde kullanıcı adını veya görünen adını güncellerse bunu belirtebilirsiniz. Böylece, geçiş anahtarı sağlayıcısı tarafından gösterilen kullanıcı bilgilerinin (ör. hesap seçimi iletişim kutularında) güncel kalmasına yardımcı olabilirsiniz.
Geçiş anahtarlarını tutarlı tutmak için iyi uygulamalar hakkında daha fazla bilgi edinmek üzere Signal API ile geçiş anahtarlarını sunucunuzdaki kimlik bilgileriyle tutarlı tutma başlıklı makaleyi inceleyin.
İkinci faktör isteme
Geçiş anahtarları, kimlik avı gibi yaygın tehditlere karşı güçlü ve yerleşik koruma sağlar. Bu nedenle, ikinci bir kimlik doğrulama faktörü önemli bir güvenlik değeri katmaz. Bunun yerine, oturum açma sırasında kullanıcılar için gereksiz bir adım oluşturur.
Yapılacaklar listesi
- Kullanıcıların form otomatik doldurma özelliğiyle geçiş anahtarı kullanarak oturum açmasına izin verin.
- Geçiş anahtarının eşleşen kimlik bilgisi arka uçta bulunamadığında sinyal verilir.
- Kullanıcı oturum açtıktan sonra henüz geçiş anahtarı oluşturmadıysa kullanıcıdan manuel olarak geçiş anahtarı oluşturmasını isteyin.
- Kullanıcı şifreyle (ve ikinci bir faktörle) oturum açtıktan sonra otomatik olarak geçiş anahtarı oluşturma (koşullu oluşturma)
- Kullanıcı, cihazlar arası geçiş anahtarıyla oturum açtıysa yerel geçiş anahtarı oluşturması istenir.
- Oturum açıldıktan sonra veya değişiklikler olduğunda, kullanılabilir geçiş anahtarlarının listesini ve güncellenen kullanıcı ayrıntılarını (kullanıcı adı, görünen ad) sağlayıcıya bildirin.
Kaynaklar
- Sunucu tarafı geçiş anahtarı kimlik doğrulaması
- Şifresiz girişler için geçiş anahtarı oluşturma
- Kullanıcıların geçiş anahtarlarını etkili bir şekilde yönetmesine yardımcı olma
- Geçiş anahtarları
- Apple belgesi: Authenticating a User Through a Web Service (Bir Kullanıcının Kimliğini Web Hizmeti Üzerinden Doğrulama)
- Google dokümanı: Geçiş anahtarlarıyla şifresiz giriş