TsgcWSServer_API_WebAuthn bileşeni, WebAuthn protokolünün relying-party (güvenen taraf) tarafını HTTPS üzerinden uygulayan bir Delphi/FPC sunucu modülüdür. TsgcWebSocketHTTPServer veya TsgcWebSocketServer ile entegre olur ve kayıt ile kimlik doğrulama için REST benzeri uç noktalar sunar.
Uç Nokta Mekanikleri
Varsayılan olarak, bileşen rotaları /sgcWebAuthn altında kaydeder:
| Amaç | Varsayılan Uç Nokta | Açıklama |
|---|---|---|
| Kayıt Seçenekleri | /Registration/Options | İstemci, navigator.credentials.create çağrısından önce bir challenge ve relying-party bilgisi ister |
| Kayıt Doğrulama | /Registration/Verify | Tarayıcı, sunucu doğrulaması için yeni kimlik bilgisini, attestation nesnesini ve istemci verilerini gönderir |
| Kimlik Doğrulama Seçenekleri | /Authentication/Options | Sunucu, izin verilen kimlik bilgisi kimliklerinin bir listesini ve bir challenge sağlar |
| Kimlik Doğrulama Doğrula | /Authentication/Verify | Tarayıcı, doğrulama için assertion'ı (authenticatorData + imza) gönderir |
| JavaScript Yardımcısı | /Webauthn | Standart WebAuthn tarayıcı çağrılarını saran bir yardımcı betik sunar |
| Test Sayfası | /Test | Geliştirme sırasında API'yi denemek için hızlı bir HTML sayfası |
Uç noktalar, mevcut yönlendirme şemalarına uyacak şekilde EndpointsOptions aracılığıyla yeniden eşlenebilir.
Temel Özellikler
- RelyingParty (RPID / RPName) – Kimlik bilgileri için mantıksal alan adını tanımlayan zorunlu DNS adı. Uygulamanızın geçerli alan adıyla eşleştiğinden emin olun.
- Origins ve TopOrigins – Geçerli kaynakların noktalı virgülle ayrılmış listeleri.
Originsbirincil alan adlarını kapsar;TopOrigins, iframe'lere gömülürken kullanılır. - AllowCrossOrigins –
Trueolarak ayarlanırsa, çapraz kaynaklı (cross-origin) iframe'ler kimlik doğrulaması talep edebilir. Bu, özenle hazırlanmış birTopOriginsve sunucu tarafı doğrulama gerektirir. - Algorithms (
WebAuthnOptions.Algorithms) – Desteklenen COSE algoritma tanımlayıcıları (örneğinES256,RS256,EdDSA). Bu, sunucunun hangi açık anahtar türlerini kabul edeceğini kontrol eder. - Timeout – WebAuthn işlemlerini tamamlamak için istemciye önerilen zaman aşımı.
- UserVerification (
WebAuthnOptions.DefaultOptions.Registration.UserVerification/.Authentication.UserVerification) – Kullanıcı doğrulaması ilkesi (preferred,required,discouraged). - Attestation (
WebAuthnOptions.DefaultOptions.Registration.Attestation) – Attestation'ın none, indirect veya direct olup olmadığını belirtir. Doğrudan (direct) attestation, attestation sertifika zincirinin doğrulanmasını gerektirir. - Metadata Service (MDS) – Etkinleştirildiğinde, bileşen, kimlik doğrulayıcı modelinin güvenilirliğini onaylamak için FIDO Metadata Service dosyalarına başvurur. Alanlar:
MDS_FileName– Yerel olarak önbelleğe alınmış JSON meta verileri (FIDO'dan indirilir).RootCert_FileName– Meta veri imzalarını doğrulamak için kök sertifika.
- Challenge – Sunucu tarafından dahili olarak onaltılık kodlanmış, kriptografik olarak rastgele 32 bayt olarak üretilir; yapılandırılabilir bir uzunluk veya rastgelelik kaynağı yoktur. Bir uygulama, istemciye gönderilmeden önce
OnWebAuthnRegistrationOptionsResponse/OnWebAuthnAuthenticationOptionsResponseiçindeResponse.Challenge'ı geçersiz kılabilir. - CredentialStorage – Doğrudan bir özellik olmasa da, bileşen, uygulamanın kimlik bilgisi açık anahtarlarını, imza sayaçlarını ve kullanıcı tanıtıcılarını (user handles) kalıcı olarak saklamasını bekler.
Olay Yaşam Döngüsü
Kayıt
OnWebAuthnRegistrationOptionsRequest(Sender, Request, var Accept): Kullanıcı adını inceleyin, geçersizse iptal edin veya kullanıcı bilgilerini sağlayın.OnWebAuthnRegistrationOptionsResponse(Sender, Request, Response): İstemciye göndermeden önce challenge'ı değiştirin veya kimlik doğrulayıcı seçim kriterlerini ayarlayın.OnWebAuthnRegistrationValidateCertificate(Sender, Request, Validate, var Accept): Özel attestation kontrolleri gerçekleştirin veya kaydı veto edin.OnWebAuthnRegistrationSuccessful(Sender, Registration, CredentialRecord, var Accept): Kimlik bilgisi kimliğini, açık anahtarı, imza sayacını ve kullanıcı tanıtıcısını veritabanınızda saklayın.OnWebAuthnRegistrationError(Sender, Request, Registration, Error): Daha açıklayıcı hataları günlüğe kaydedin veya döndürün.
Kimlik Doğrulama
OnWebAuthnAuthenticationOptionsRequest(Sender, Request, var CredentialRecords, var Accept): Kullanıcı adı için kimlik bilgisi kimliklerini arayın, izin verilen taşıma yöntemlerine (USB, NFC, BLE, dahili) karar verin.OnWebAuthnAuthenticationOptionsResponse(Sender, Request, Response):UserVerificationayarını özelleştirin, challenge uzunluğunu ayarlayın veya ek meta veriler gömün.OnWebAuthnAuthenticationSuccessful(Sender, Request, Authentication, var Accept): İmza sayacı ilerlemesini doğrulayın, hesap durumu kontrollerini uygulayın.OnWebAuthnAuthenticationSuccessful(Sender, Request, Authentication, var Accept): İmza sayacını güncelleyin ve oturum belirteçleri üretin.OnWebAuthnAuthenticationError(Sender, Request, Error): İstek sınırlama, kilitleme ilkeleri ve denetim uygulayın.
Bu olaylar, seçenekleri oluşturmaktan assertion'ları işlemeye kadar protokolün her adımı üzerinde ince ayrıntılı kontrol sağlar.
