WebAuthn | Kayıt

WebAuthn Registration, istemciyi (tarayıcı), kimlik doğrulayıcıyı (güvenlik cihazı) ve relying party'yi (RP; TsgcWSAPIServer_WebAuthn delphi/cbuilder sunucusu) içerir.

 

Kayıt Seçenekleri

 

Yeni bir kullanıcı kimlik bilgisi oluşturmak, genellikle istemcinin TsgcWSAPIServer_WebAuthn sunucusunda yapılandırılan Registration Options Endpoint öğesine yeni bir HTTP Request kullanarak kayıt akışını başlatmasını gerektirir. Varsayılan olarak, uç nokta /sgcWebAuthn/Registration/Options'tır, bu nedenle sunucunuz https://www.test.com alan adında dinliyorsa, istemci https://www.test.com/sgcWebAuthn/Registration/Options url'sine yeni bir istek yapmalıdır.

 

İstemci, yük olarak aşağıdaki json'ı geçerek yeni bir istek gönderir (kullanıcı adı olarak test kullanarak)

 

{"username":"test","algorithms":[]}

 

Sunucu isteği okur ve yeni bir challenge ile bir yanıt döndürür.

 

{
"rp": {
"name": "localhost",
"id": "localhost"
},
"user": {
"id": "36b9d6a84204487382fee62e7e67a80d",
"name": "test",
"displayName": "test"
},
"challenge": "6c6c468c99f24bf29a85a15b661f75f385654f97309c46bab2909c926e17ccbe",
"pubKeyCredParams": [
{
"type": "public-key",
"alg": "-7"
},
{
"type": "public-key",
"alg": "-257"
}
],
"timeout": 60000,
"excludeCredentials": [],
"authenticatorSelection": {
"residentKey": "preferred",
"requireResidentKey": false,
"userVerification": "preferred"
},
"attestation": "direct",
"hints": [],
"extensions": {
"credProps": true
}
}

 

Yanıt aşağıdaki verileri döndürür:

 

 

 

Registration Verify

 

Artık istemci, sunucudan gelen yanıta sahiptir, yanıtı okur ve kimlik doğrulayıcı kriptografik verileri istemci web tarayıcısına döndürür. Şimdi istemci, TsgcWSAPIServer_WebAuthn sunucusunda yapılandırılan Registration Verify Endpoint'e aşağıdaki verilerle yeni bir HTTP Request gönderir, varsayılan olarak bu /sgcWebAuthn/Registration/Verify adresidir

, bu nedenle sunucunuz https://www.test.com alan adında dinliyorsa, istemci https://www.test.com/sgcWebAuthn/Registration/Verify url'sine yeni bir istek yapmalıdır.

 

Authenticator, tarayıcıdaki JavaScript'e şu şekilde geri yanıt verir:

 

 

Aşağıda bir örneği bulun:

 

{
"id": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"rawId": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"response": {
"attestationObject": "o2NmbXRmcGFja2VkZ2F0dFN0....",
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uY3Jl....",
"transports": [
"nfc",
"usb"
],
"publicKeyAlgorithm": -7,
"publicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj....",
"authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_k...."
},
"type": "public-key",
"clientExtensionResults": {
"credProps": {
"rk": true
}
},
"authenticatorAttachment": "cross-platform"
}

 

Sunucu, istemciden gelen JSON isteğini okur ve açık anahtarı ve kimlik bilgisi ID'sini çözer, doğrular ve saklar.

 

attestationObject ve clientDataJSON'u çözün:

 

 

Store Credential:

 

 

 

 

Kayıt Akışı

Aşağıdaki bağlantıları kullanarak Kayıt Akışı işlemi hakkında daha fazla bilgi edinin: