agr
(Agr)
4 Marzo, 2026 18:14
1
Cuando utilizo hardware que no poseo, quiero usar una llave de hardware en lugar de introducir mi contraseña. Para este propósito, conseguí una Nitrokey 3C.
El registro en Discourse falla. También aquí en meta.discourse.org
p.d. Registrar la llave como segundo factor funcionó en un Linux (Debian) + Chromium, pero no cuando intento iniciar sesión.
¿Qué navegador estás usando?
¿Cuál es el error que obtienes?
¿Hay algún detalle adicional en la consola de desarrollo?
agr
(Agr)
4 Marzo, 2026 20:04
3
esto es en debian chromium (y en ubuntu firefox lo mismo; también lo mismo en firefox nightly (snap) en debian)
Después de presionar el botón en la tecla
‘El proceso de registro de la clave de acceso ha caducado, ha sido cancelado o no está permitido.’
El error no es útil; nada especial en la consola.
La solicitud a https://meta.discourse.org/u/register_passkey.json devuelve http 500 con la carga útil {"status":500,"error":"Internal Server Error"}.
¿Los datos de la solicitud ayudarían?
id=owBYLgKCahnu_YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB-9Hek6KoX4wcA
rawId=owBYLgKCahnu/YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB+9Hek6KoX4wcA==
type=public-key
attestation=o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVjB06zu7aykTbz9dy22doBbDg8EboPkWBAWR4JLQn8z1TTFAAAAewAAAAAAAAAAAAAAAAAAAAAAUqMAWC4CgmoZ7v2ASigwGk3SuyzpQxc8CfZCT71357ZnX28js7N+XXXjjNCpzah4rum8AUy7te3xdgO0JDXwhOcCUD3TqxuTCAfvR3pOiqF+MHCkAQEDJyAGIVggy/MDuHan5fRjuKIQp7zkGku7P6p/8s2B4kfectFHcF6ha2htYWMtc2VjcmV09A==
clientData=eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTmpRMVpUazJaVE00WlRRNE1UZGxOamd3TVdJNE5XVm1ZV1F5TkRObE1EVmlZek0zTURkbU1qZzJPR1V6TnpRd05HUmxZamRrTVdRMk1tWTEiLCJvcmlnaW4iOiJodHRwczovL21ldGEuZGlzY291cnNlLm9yZyIsImNyb3NzT3JpZ2luIjpmYWxzZX0=
name=Main Passkey
agr
(Agr)
4 Marzo, 2026 21:28
6
sí, registro y autenticación
Acabo de intentar registrar una nueva clave U2F aquí en meta y estoy viendo este error en la consola, lo que probablemente lo explica:
NotAllowedError: La operación se agotó o no fue permitida.
Ver: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.
agr
(Agr)
4 Marzo, 2026 21:56
9
No entiendo la descripción del error en w3.org ; ¿Entonces la implementación está rota? No parece que obtenga el error en la consola, ¿así que hay algo que pueda aportar?
Tendremos que revisar esto; creo que los navegadores han implementado requisitos adicionales (como se indica en el enlace) desde que desarrollamos esto por primera vez.
1 me gusta
keegan
(Keegan George)
5 Marzo, 2026 17:53
18
Gracias @agr por identificar este problema, he implementado una solución aquí:
main ← fix-hardware-passkeys
approved 05:50PM - 05 Mar 26 UTC
**Currently, passkey registration has two bugs:**
1. Registration fails with … an HTTP 500 for authenticators that include extension data (i.e. `hmac-secret` in their attestation response) because we slice all bytes after the credential ID the public key.
2. Registration fails with `NotAllowedError` on some hardware keys (i.e. Solo 2) because `pubKeyCredParams` includes invalid HMAC symmetric algorithms from the `COSE` gem, which strict authenticator firmware rejects.
**This fix:**
1. Uses `CBOR::Unpacker` streaming decode to read exactly one `CBOR` object from the byte stream, stopping before any trailing extension data. Also adds `COSE::MalformedKeyError` to the rescue block so future failures return a proper error response.
2. Replaces the blanket `COSE::Algorithm.registered_algorithm_ids` with an explicit list of asymmetric signature algorithms valid for `WebAuthn`.
Meta bug report: https://meta.discourse.org/t/cant-set-up-passkey-on-any-discourse/397642/
Actualizar su Discourse a la última versión debería resolver el problema, pero si aún encuentra algún problema, háganoslo saber.
2 Me gusta
agr
(Agr)
5 Marzo, 2026 20:08
20
El registro funcionó bien. Fue rápido
Pero login / auth.js me da una respuesta 500
1 me gusta
Confirmado; veo:
NoMethodError (método no definido 'hash_function' para una instancia de COSE::Algorithm::EdDSA)
lib/discourse_webauthn/authentication_service.rb:99:in 'DiscourseWebauthn::AuthenticationService#authenticate_security_key'
app/controllers/session_controller.rb:399:in 'SessionController#passkey_login'
app/controllers/application_controller.rb:443:in 'block in ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:443:in 'ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:1089:in 'ApplicationController#ensure_dont_cache_page'
lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call'
lib/middleware/crawler_hooks.rb:11:in 'Middleware::CrawlerHooks#call'
lib/content_security_policy/middleware.rb:12:in 'ContentSecurityPolicy::Middleware#call'
lib/middleware/anonymous_cache.rb:420:in 'Middleware::AnonymousCache#call'
lib/middleware/csp_script_nonce_injector.rb:12:in 'Middleware::CspScriptNonceInjector#call'
config/initializers/008-rack-cors.rb:26:in 'Discourse::Cors#call'
lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call'
config/initializers/100-quiet_logger.rb:20:in 'DiscourseRackQuietAssetsLogger#call'
config/initializers/100-silence_logger.rb:29:in 'SilenceLogger#call'
lib/middleware/enforce_hostname.rb:23:in 'Middleware::EnforceHostname#call'
lib/middleware/request_tracker.rb:321:in 'Middleware::RequestTracker#call'
lib/middleware/overload_protections.rb:22:in 'Middleware::OverloadProtections#call'
lib/middleware/processing_request.rb:14:in 'Middleware::ProcessingRequest#call'
en los registros cuando intento usar mi Solo 2
1 me gusta
keegan
(Keegan George)
6 Marzo, 2026 21:53
25
Gracias por verificarlo @agr , acabo de enviar otra corrección:
main ← fix-passkey-eddsa-login-auth
merged 09:51PM - 06 Mar 26 UTC
**Previously**, passkey authentication called `cose_algorithm.hash_function` to … verify signatures, but `COSE::Algorithm::EdDSA` does not implement `hash_function` (EdDSA has the hash built into the algorithm). This caused a `NoMethodError 500` for any user who registered a passkey with an EdDSA-based authenticator.
**This commit** uses the COSE gem's own `cose_algorithm.verify` method, which correctly dispatches signature verification for all algorithm types — including EdDSA, which passes nil as the digest internally.
Espero que no haya más problemas , pero por favor, ¡házmelo saber si sigues encontrando algún problema!
1 me gusta
agr
(Agr)
7 Marzo, 2026 11:49
26
Gracias por la rápida solución. También probé a usar Nitrokey para la autenticación de dos factores (2FA) y funcionó tanto para el registro como para el inicio de sesión. ¡Realmente genial!
2 Me gusta