WebAuthn | Registrierung

An der WebAuthn-Registrierung sind der Client (Browser), der Authenticator (Sicherheitsgerät) und die Relying Party (RP; TsgcWSAPIServer_WebAuthn Delphi/C++Builder-Server) beteiligt.

 

Registrierungsoptionen

 

Das Erstellen einer neuen Benutzeranmeldeinformation erfordert üblicherweise, dass der Client den Registrierungsablauf mit einer neuen HTTP-Anfrage an den im TsgcWSAPIServer_WebAuthn-Server konfigurierten Registration Options Endpoint startet. Standardmäßig ist der Endpunkt /sgcWebAuthn/Registration/Options, wenn Ihr Server also in der Domain https://www.test.com lauscht, sollte der Client eine neue Anfrage an die URL https://www.test.com/sgcWebAuthn/Registration/Options stellen.

 

Der Client sendet eine neue Anfrage und übergibt als Nutzlast das folgende JSON (mit test als Benutzername)

 

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

 

Der Server liest die Anfrage und gibt eine Antwort mit einer neuen Challenge zurück.

 

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

 

Die Antwort gibt die folgenden Daten zurück:

 

 

 

Registration Verify

 

Jetzt hat der Client die Antwort vom Server, liest die Antwort, und der Authenticator gibt die kryptografischen Daten an den Client-Webbrowser zurück. Jetzt sendet der Client eine neue HTTP-Anfrage mit den folgenden Daten an den Registration-Verify-Endpunkt, der im TsgcWSAPIServer_WebAuthn-Server konfiguriert ist, standardmäßig /sgcWebAuthn/Registration/Verify

, sodass der Client, wenn Ihr Server in der Domain https://www.test.com lauscht, eine neue Anfrage an die URL https://www.test.com/sgcWebAuthn/Registration/Verify stellen sollte.

 

Der Authenticator antwortet dem JavaScript im Browser mit:

 

 

Nachfolgend ein Beispiel:

 

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

 

Der Server liest den JSON-Request des Clients und decodiert, verifiziert und speichert den öffentlichen Schlüssel und die Credential-ID.

 

attestationObject und clientDataJSON decodieren:

 

 

Anmeldedaten speichern:

 

 

 

 

Registrierungsablauf

Weitere Informationen zum Registrierungsablauf finden Sie über die folgenden Links: