Autenticación WebAuthn permite a los usuarios iniciar sesión utilizando credenciales de clave pública previamente registradas. Implica validar un desafío firmado usando la clave pública almacenada del usuario desde el registro.
Opciones de autenticación
La autenticación requiere que el cliente inicie el flujo de autenticación usando una nueva solicitud HTTP al Endpoint de opciones de autenticación configurado en el servidor TsgcWSAPIServer_WebAuthn. De forma predeterminada, el endpoint es /sgcWebAuthn/Authentication/Options, por lo que si su servidor está escuchando en el dominio https://www.test.com, el cliente debe hacer una nueva solicitud a la URL https://www.test.com/sgcWebAuthn/Authentication/Options.
El cliente envía la aserción (respuesta de autenticación) al servidor mediante POST
{"username":"test","user_verification":"preferred"}
El servidor genera PublicKeyCredentialRequestOptions
{
"challenge": "9d0d61edf30b45f8b88aef7087f9117716e2b7d8b0ee4460b06142f39dd0ec9f",
"timeout": 60000,
"rpId": "localhost",
"allowCredentials": [
{
"id": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"type": "public-key",
"transports": [
"nfc",
"usb"
]
}
],
"userVerification": "preferred",
"hints": [],
"attestation": "none",
"attestationFormats": [],
"extensions": {}
}
Verificación de autenticación
Para autenticarse, el cliente debe iniciar el flujo de autenticación mediante una nueva solicitud HTTP al Endpoint de verificación de autenticación configurado en el servidor TsgcWSAPIServer_WebAuthn. Por defecto, el endpoint es /sgcWebAuthn/Authentication/Verify; si su servidor escucha en el dominio https://www.test.com, el cliente debe realizar una nueva solicitud a la URL https://www.test.com/sgcWebAuthn/Authentication/Verify.
El navegador solicita al usuario que use su autenticador (p. ej., huella dactilar, YubiKey). El autenticador firma el desafío con la clave privada vinculada al ID de credencial. La credencial devuelta incluye:
A continuación encontrará un ejemplo JSON de la solicitud del cliente:
{
"id": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"rawId": "yeA4BVRlrAfLG-KzqsL_rlI4ffhuKHK8uoEkVoab065UkS82Zqlh9VFQHIYwOuOo",
"response": {
"authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2MFAAAABw",
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ.....",
"signature": "MEQCIAJRqvvys8....",
"userHandle": "36b9d6a84204487382fee62e7e67a80d"
},
"type": "public-key",
"clientExtensionResults": {},
"authenticatorAttachment": "cross-platform"
}
El servidor lee la solicitud del cliente, valida que la credencial está almacenada y verifica la firma. Si la firma es válida, se llama al evento OnWebAuthnAuthenticationSuccessful.
Obtenga más información sobre el proceso del flujo de autenticación mediante los siguientes enlaces: