Güvenen taraflar (RP'ler), ilişkili ortak anahtar kimlik bilgisinin AAGUID'sini inceleyerek geçiş anahtarının hangi geçiş anahtarı sağlayıcısı tarafından oluşturulduğunu belirleyebilir.
Geçiş anahtarı yönetimiyle ilgili zorluklar
Geçiş anahtarlarının avantajlarından biri, kullanıcıların tek bir hesap için birden fazla geçiş anahtarı oluşturmasına olanak tanımasıdır. Geçiş anahtarının sağlamlığıyla birlikte bu esneklik sayesinde, kullanıcı geçiş anahtarlarından birini kaybederek hesabın kilitlenmesine rağmen alternatif geçiş anahtarları kullanarak güvenen tarafta oturum açabilir.
Bir RP'de birden fazla geçiş anahtarı yöneten kullanıcıların karşılaştığı zorluk, diğerlerinden belirli bir geçiş anahtarını düzenlemesi veya silme ihtiyacı duyduğunda doğru geçiş anahtarını belirlemektir. Kullanıcının kullanılmayan bir geçiş anahtarını kaldırmak istemesi buna örnek verilebilir. RP'lerin, geçiş anahtarı listesine geçiş anahtarıyla ilgili bilgileri (ör. oluşturulma tarihi ve son kullanım tarihi) eklemesi önerilir. Bu sayede kullanıcılar belirli bir geçiş anahtarını bulabilir.
RP'ler, kullanıcıların geçiş anahtarını oluşturulduktan hemen sonra veya daha sonra adlandırmalarına da izin verebilir ancak çoğu kullanıcı bunu yapmaz. İdeal olarak geçiş anahtarları, istemciden gönderilen sinyalleri veya ortak anahtar kimlik bilgisine dahil edilen bilgileri yansıtacak şekilde otomatik olarak adlandırılır.
Tarayıcılar, güvenen tarafların geçiş anahtarlarını adlandırmak için kullanabileceği bir kullanıcı aracısı dizesi sağlar. Ancak Android, iOS veya uzantı özelliklerine sahip masaüstü tarayıcılar gibi platformlar, üçüncü taraf şifre yöneticileri tarafından geçiş anahtarı oluşturulmasına izin verir ve kullanıcı aracısı dizesi, gerçek geçiş anahtarı sağlayıcının kim olduğunu her zaman göstermez.
Geçiş anahtarı kaydında döndürülen ortak anahtar kimlik bilgisine dahil edilen Kimlik Doğrulayıcı Attestation Globally Unique Identifier (AAGUID) ile RP'ler geçiş anahtarı sağlayıcısını belirleyebilir ve kullanıcıların doğru geçiş anahtarını kolayca bulabilmesi için bu sağlayıcıyı kullanabilir.
AAGUID ile geçiş anahtarı sağlayıcısını belirleme
AAGUID, kimlik doğrulayıcının modelini (kimlik doğrulayıcının belirli bir örneğini değil) tanımlayan benzersiz bir sayıdır. AAGUID, ortak anahtar kimlik bilgisinin kimlik doğrulayıcı verilerinin bir parçası olarak bulunabilir.
RP'ler, geçiş anahtarı sağlayıcıyı tanımlamak için AAGUID'yi kullanabilir. Örneğin, bir kullanıcı Android cihazda Google Şifre Yöneticisi'ni kullanarak geçiş anahtarı oluşturursa RP, "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
değerine sahip bir AAGUID alır. RP, geçiş anahtarı listesinde geçiş anahtarının Google Şifre Yöneticisi'nde oluşturulduğunu belirtmek için geçiş anahtarına ek açıklama ekleyebilir.
RP'ler, AAGUID'yi geçiş anahtarı sağlayıcıyla eşlemek için topluluk kaynaklı bir AAGUID deposunu kullanabilir. AAGUID'yi listede arayarak geçiş anahtarı sağlayıcısının adını ve simgesinin svg veri metnini bulabilirsiniz.
AAGUID'yi almak, çoğu WebAuthn kitaplığının sunduğu bir özelliktir. Aşağıdaki örnekte, SimpleWebAuthn kullanan sunucu tarafı kayıt kodu gösterilmektedir:
// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };
...
// Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
response: credential,
expectedChallenge,
expectedOrigin,
expectedRPID,
requireUserVerification: false,
});
...
const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';
Sonuç
AAGUID, geçiş anahtarı oluşturan geçiş anahtarı sağlayıcısını tanımlayan benzersiz bir dizedir. RP'ler, kullanıcıların geçiş anahtarlarını yönetmesini kolaylaştırmak için AAGUID'yi kullanabilir. AAGUID'leri geçiş anahtarı sağlayıcılarıyla eşlemek için topluluk kaynaklı bir AAGUID deposu kullanılabilir.