agr
(Agr)
4. März 2026 um 18:14
1
Wenn ich Hardware verwende, die ich nicht besitze, möchte ich anstelle meines Passworts einen Hardware-Schlüssel verwenden. Zu diesem Zweck habe ich einen Nitrokey 3C erhalten.
Die Registrierung auf Discourse schlägt fehl. Auch hier auf meta.discourse.org .
P.S. Die Registrierung des Schlüssels als zweiter Faktor funktionierte unter Linux (Debian) + Chromium, aber nicht, wenn ich versuche, mich anzumelden.
Welchen Browser verwenden Sie?
Welche Fehlermeldung erhalten Sie?
Gibt es zusätzliche Details in der Entwicklerkonsole?
agr
(Agr)
4. März 2026 um 20:04
3
Dies ist auf Debian Chromium (und auf Ubuntu Firefox dasselbe; auch dasselbe auf Firefox Nightly (Snap) unter Debian)
Nach dem Drücken der Schaltfläche auf dem Schlüssel
„Der Prozess zur Registrierung des Passkeys ist entweder abgelaufen, wurde abgebrochen oder ist nicht zulässig.“
Die Fehlermeldung ist nicht hilfreich; in der Konsole ist nichts Besonderes zu sehen.
Die Anfrage an https://meta.discourse.org/u/register_passkey.json gibt HTTP 500 mit der Nutzlast {"status":500,"error":"Internal Server Error"} zurück.
Würden die Anfragedaten helfen?
id=owBYLgKCahnu_YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB-9Hek6KoX4wcA
rawId=owBYLgKCahnu/YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB+9Hek6KoX4wcA==
type=public-key
attestation=o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVjB06zu7aykTbz9dy22doBbDg8EboPkWBAWR4JLQn8z1TTFAAAAewAAAAAAAAAAAAAAAAAAAAAAUqMAWC4CgmoZ7v2ASigwGk3SuyzpQxc8CfZCT71357ZnX28js7N+XXXjjNCpzah4rum8AUy7te3xdgO0JDXwhOcCUD3TqxuTCAfvR3pOiqF+MHCkAQEDJyAGIVggy/MDuHan5fRjuKIQp7zkGku7P6p/8s2B4kfectFHcF6ha2htYWMtc2VjcmV09A==
clientData=eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTmpRMVpUazJaVE00WlRRNE1UZGxOamd3TVdJNE5XVm1ZV1F5TkRObE1EVmlZek0zTURkbU1qZzJPR1V6TnpRd05HUmxZamRrTVdRMk1tWTEiLCJvcmlnaW4iOiJodHRwczovL21ldGEuZGlzY291cnNlLm9yZyIsImNyb3NzT3JpZ2luIjpmYWxzZX0=
name=Main Passkey
Funktioniert es auf https://webauthn.io/ ?
agr
(Agr)
4. März 2026 um 21:28
6
ja, Registrierung und Authentifizierung
Ich habe gerade versucht, einen neuen U2F-Schlüssel hier auf meta zu registrieren, und ich sehe diesen Fehler in der Konsole, was das wahrscheinlich erklärt:
NotAllowedError: The operation either timed out or was not allowed.
See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.
agr
(Agr)
4. März 2026 um 21:56
9
Ich verstehe die Fehlerbeschreibung unter w3.org nicht; ist also die Implementierung fehlerhaft? Ich scheine den Fehler in der Konsole nicht zu sehen, kann ich also etwas beitragen?
Wir müssen uns das ansehen – ich denke, Browser haben seit unserer ersten Entwicklung zusätzliche Anforderungen implementiert (wie im Link angegeben).
1 „Gefällt mir“
keegan
(Keegan George)
5. März 2026 um 17:53
18
Vielen Dank an @agr für die Identifizierung dieses Problems. Ich habe hier einen Fix veröffentlicht:
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/
Wenn Sie Ihr Discourse auf die neueste Version aktualisieren, sollte das Problem nun behoben sein. Sollten Sie weiterhin Probleme haben, lassen Sie es uns bitte wissen.
2 „Gefällt mir“
agr
(Agr)
5. März 2026 um 20:08
20
Die Registrierung hat gut funktioniert. Das ging schnell
Aber login / auth.js gibt mir eine 500er-Antwort
1 „Gefällt mir“
Bestätigt; ich sehe:
NoMethodError (undefined method 'hash_function' for an instance of 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'
in den Logs, wenn ich versuche, meinen Solo 2 zu verwenden
1 „Gefällt mir“
keegan
(Keegan George)
6. März 2026 um 21:53
25
Vielen Dank für die Überprüfung, @agr , ich habe gerade einen weiteren Fix gepusht:
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.
Hoffentlich gibt es keine weiteren Probleme mehr , aber bitte lassen Sie mich wissen, wenn Sie immer noch auf Probleme stoßen!
1 „Gefällt mir“
agr
(Agr)
7. März 2026 um 11:49
26
Vielen Dank für die schnelle Behebung. Ich habe auch versucht, den Nitrokey für die Zwei-Faktor-Authentifizierung (2FA) zu verwenden, und es hat sowohl bei der Registrierung als auch beim Login funktioniert. Wirklich großartig!!
2 „Gefällt mir“