Passkey auf keinem Discourse einrichten können

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?

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/ ?

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.

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“

Vielen Dank an @agr für die Identifizierung dieses Problems. Ich habe hier einen Fix veröffentlicht:

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“

Die Registrierung hat gut funktioniert. Das ging schnell :slight_smile:

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“

Vielen Dank für die Überprüfung, @agr, ich habe gerade einen weiteren Fix gepusht:

Hoffentlich gibt es keine weiteren Probleme mehr :crossed_fingers:, aber bitte lassen Sie mich wissen, wenn Sie immer noch auf Probleme stoßen!

1 „Gefällt mir“

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“