WebAuthn | Registratie

WebAuthn-registratie omvat de client (browser), de authenticator (beveiligingsapparaat) en de relying party (RP; TsgcWSAPIServer_WebAuthn Delphi/CBuilder-server).

 

Registratieopties

 

Het aanmaken van een nieuwe gebruikerscredential vereist gewoonlijk dat de client de registratiestroom start via een nieuw HTTP-verzoek naar het Registratieopties-eindpunt dat is geconfigureerd in de TsgcWSAPIServer_WebAuthn-server. Standaard is het eindpunt /sgcWebAuthn/Registration/Options, dus als uw server luistert op het domein https://www.test.com, moet de client een nieuw verzoek indienen op de url https://www.test.com/sgcWebAuthn/Registration/Options.

 

De client verzendt een nieuw verzoek met de volgende JSON als payload (waarbij 'test' als gebruikersnaam wordt gebruikt)

 

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

 

De server reads het verzoek and returns a response with a nieuw challenge.

 

{
"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
}
}

 

De respons retourneert de volgende gegevens:

 

 

 

Registratieverificatie

 

Nu heeft de client het antwoord van de server ontvangen, leest het antwoord en retourneert de authenticator de cryptografische gegevens naar de clientwebbrowser. Nu stuurt de client een nieuw HTTP-verzoek met de volgende gegevens naar het Registratie-verificatie-eindpunt geconfigureerd in de TsgcWSAPIServer_WebAuthn-server, standaard /sgcWebAuthn/Registration/Verify

, dus als uw server luistert op het domein https://www.test.com, moet de client een nieuw verzoek indienen op de url https://www.test.com/sgcWebAuthn/Registration/Verify.

 

De authenticator antwoordt terug naar de JavaScript in de browser met:

 

 

Hieronder vindt u een voorbeeld:

 

{
    "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"
}

 

De server leest het JSON-verzoek van de client en decodeert, verifieert en slaat de publieke sleutel en inloggegevens-id op.

 

Decodeer attestationObject en clientDataJSON:

 

 

Credential opslaan:

 

 

 

 

Registratiestroom

Meer informatie over het registratieproces via de volgende links: