sgcWebSockets 2025.4.0 Enterprise sürümünden itibaren WebAuthn Protokolü desteklenir (şu anda BETA aşamasında).
WebAuthn (Web Authentication), web üzerinde güvenli, parolasız kimlik doğrulamayı mümkün kılmak için World Wide Web Consortium (W3C) ve FIDO Alliance tarafından geliştirilen bir web standardıdır. Daha geniş FIDO2 çatısının bir parçasıdır ve genellikle kimlik avına, kimlik bilgisi doldurmaya ve diğer saldırılara karşı savunmasız olan geleneksel parolalara bağımlılığı azaltmayı amaçlar.
WebAuthn, özünde kullanıcıların ortak anahtarlı kriptografi kullanarak kimlik doğrulamasına olanak tanır. Kullanıcılar, bir kullanıcı adı ve parola yerine, bir web uygulamasına (Relying Party) benzersiz bir ortak-özel anahtar çifti kaydeder. Özel anahtar, donanım güvenlik anahtarı, akıllı telefon veya yerleşik biyometrik cihaz gibi bir kimlik doğrulayıcıda güvenli bir şekilde saklanırken, ortak anahtar sunucuda saklanır.
Kimlik doğrulama sırasında, sunucu kullanıcının özel anahtarıyla imzalanması gereken bir challenge yayınlar. İmzalanmış challenge geri döndürülür ve saklanan ortak anahtar kullanılarak doğrulanır; bu, yanıtın hem bütünlüğünü hem de kaynağını güvence altına alır. Bu yaklaşım, kimlik bilgilerinin ele geçirilmesini veya yeniden kullanılmasını önler.
WebAuthn, çeşitli kimlik doğrulayıcıları ve cihazları destekler, bu da onu hem geliştiriciler hem de kullanıcılar için esnek hale getirir. Ayrıca, PIN'ler veya biyometri gibi diğer faktörlerle birleştirildiğinde çok faktörlü kimlik doğrulamayı (MFA) mümkün kılar ve kullanılabilirlikten ödün vermeden güvenliği önemli ölçüde artırır.
Desteklenen Attestation Biçimleri
Farklı attestation biçimleri, bu verilerin nasıl yapılandırıldığını ve doğrulandığını tanımlar. Yaygın olarak kullanılan üç biçim android-key, packed ve fido-u2f, apple veya none gibi diğerleridir. Varsayılan olarak tüm attestation biçimleri etkindir; desteklenen attestation biçimlerinin listesini aşağıda bulabilirsiniz:
- NoneAttestation: bu durumda hiçbir attestation verisi döndürülmez. Cihaz tanımlayıcılarının açığa çıkmasını önleyerek kullanıcı gizliliğine öncelik verir. Cihaz kaynağıyla ilgilenmeyen uygulamalarda yaygındır.
- PackedAttestation: birçok kimlik doğrulayıcı tarafından kullanılan esnek, kompakt bir biçimdir. Kimlik doğrulayıcı bir attestation sertifikası ve imzası döndürür. Şunlar olabilir: Full attestation: Satıcı tarafından sağlanan bir anahtar ve sertifika ile imzalanır veya Self attestation: Kimlik bilgisi özel anahtarı kullanılarak imzalanır. Farklı platformlarda en yaygın kullanılan biçimdir (ör. YubiKey, Windows Hello).
- TPMAttestation: Trusted Platform Module (TPM) bulunan cihazlar tarafından kullanılır. Attestation, TPM'deki anahtarlar kullanılarak imzalanır ve bir sertifika zinciri içerir. TPM yongaları bulunan Kurumsal masaüstü/dizüstü bilgisayarlar (ör. Windows makineleri) tarafından kullanılır.
- AndroidKeyAttestation: Android Keystore bulunan Android cihazları tarafından kullanılır. Anahtar donanımda üretilir ve attestation, cihaz üreticisi tarafından verilen bir sertifika zinciriyle imzalanmış bilgileri içerir. Donanım destekli keystore'lara (TEE veya StrongBox) sahip Android telefonlar tarafından kullanılır.
- AppleAttestation: Touch ID ve Face ID gibi Apple platform kimlik doğrulayıcıları tarafından kullanılır. Attestation, Apple'ın dahili API'leri tarafından üretilir ve özel bir sertifika biçimi içerir. Apple biyometrisi kullanılarak Safari'de kullanılır.
- FidoU2FAttestation: FIDO U2F kimlik doğrulayıcıları tarafından kullanılan eski attestation biçimi. U2F uyumlu bir sertifika ve imza döndürür. FIDO U2F'yi destekleyen eski güvenlik anahtarları (ör. ilk YubiKey'ler) tarafından kullanılır.
WebAuthn Akışı
- WebAuthn Kaydı: Sunucu bir challenge üretir ve istemciye gönderir; istemci bir anahtar çifti oluşturmak için bir kimlik doğrulayıcı (ör. güvenlik anahtarı veya biyometrik cihaz) kullanır. Ortak anahtar geri gönderilir ve gelecekteki kimlik doğrulama için sunucu tarafından saklanır.
- WebAuthn Kimlik Doğrulama: Sunucu istemciye bir challenge gönderir; istemci bunu, kimlik doğrulayıcıda saklanan önceden kaydedilmiş özel anahtarı kullanarak imzalar. İmzalanmış yanıt, kullanıcının kimliğini doğrulamak için saklanan ortak anahtar kullanılarak sunucu tarafından doğrulanır.

WebAuthn Sunucu Bileşeni
TsgcWSAPIServer_WebAuthn bileşeni, WebAuthn Relying Party sunucusunu uygulamak için basit ama güçlü bir çözüm sunar ve web uygulamanızda parolasız kimlik doğrulamayı mümkün kılar. Bir WebAuthn uygulaması, sunucu tarafı kaydı ve kimlik doğrulamayı yöneten bir WebAuthn sunucusundan ve genellikle bir javascript uygulaması olan bir istemci tarafı uygulamasından oluşur.WebAuthn Sunucusunun basit bir yapılandırmasını aşağıda bulabilirsiniz:
// ... create the servers
HTTPServer := TsgcWebSocketHTTPServer.Create(nil);
WebAuthnServer := TsgcWSAPIServer_WebAuthn.Create(nil);
WebAuthnServer.Server := HTTPServer;
// ... enable for testing
WebAuthnServer.EndpointsOptions.Test.Enabled := True;
// ... WebAuthn options
WebAuthnServer.WebAuthnOptions.RelyingParty := 'localhost';
// ... bindings
Server.Port := 443;
HTTPServer.SSLOptions.Port := 443;
HTTPServer.Bindings.Clear;
With HTTPServer.Bindings.Add do
begin
Port := 443;
IP := '127.0.0.1';
end;
HTTPServer.SSLOptions.Certificate := 'sgc.pem';
HTTPServer.SSLOptions.KeyFile := 'sgc.pem';
HTTPServer.SSL := True;
// ... active
HTTPServer.Active := True;
Delphi WebAuthn Sunucu Demosu
Aşağıdaki Delphi WebAuthn Demosu, yeni bir kimlik bilgisinin nasıl kaydedileceğini ve ardından kullanıcının kimliğini doğrulamak için nasıl kullanılacağını gösterir.
