当使用我不拥有的硬件时,我希望使用硬件密钥而不是输入密码。我为此目的购买了一个 Nitrokey 3C。
在 discourse 上注册失败。在这里(meta.discourse.org)也失败了。
附注:在 Linux (Debian) + Chromium 上注册密钥作为第二因素成功了,但在我尝试登录时却不行。
当使用我不拥有的硬件时,我希望使用硬件密钥而不是输入密码。我为此目的购买了一个 Nitrokey 3C。
在 discourse 上注册失败。在这里(meta.discourse.org)也失败了。
附注:在 Linux (Debian) + Chromium 上注册密钥作为第二因素成功了,但在我尝试登录时却不行。
您使用的是什么浏览器?
您收到了什么错误?
开发者控制台中是否有任何附加信息?
在 Debian 上的 Chromium(在 Ubuntu Firefox 上也是如此;在 Debian 上的 Firefox Nightly (snap) 上也是如此)
按下按钮后
“通行密钥注册过程已超时、已取消或不允许。”
错误没有帮助;控制台中没有特别的内容。
对 https://meta.discourse.org/u/register_passkey.json 的请求返回 http 500,载荷为 {"status":500,"error":"Internal Server Error"}。
请求数据是否有帮助?
id=owBYLgKCahnu_YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB-9Hek6KoX4wcA
rawId=owBYLgKCahnu/YBKKDAaTdK7LOlDFzwJ9kJPvXfntmdfbyOzs35ddeOM0KnNqHiu6bwBTLu17fF2A7QkNfCE5wJQPdOrG5MIB+9Hek6KoX4wcA==
type=public-key
attestation=o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVjB06zu7aykTbz9dy22doBbDg8EboPkWBAWR4JLQn8z1TTFAAAAewAAAAAAAAAAAAAAAAAAAAAAUqMAWC4CgmoZ7v2ASigwGk3SuyzpQxc8CfZCT71357ZnX28js7N+XXXjjNCpzah4rum8AUy7te3xdgO0JDXwhOcCUD3TqxuTCAfvR3pOiqF+MHCkAQEDJyAGIVggy/MDuHan5fRjuKIQp7zkGku7P6p/8s2B4kfectFHcF6ha2htYWMtc2VjcmV09A==
clientData=eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTmpRMVpUazJaVE00WlRRNE1UZGxOamd3TVdJNE5XVm1ZV1F5TkRObE1EVmlZek0zTURkbU1qZzJPR1V6TnpRd05HUmxZamRrTVdRMk1tWTEiLCJvcmlnaW4iOiJodHRwczovL21ldGEuZGlzY291cnNlLm9yZyIsImNyb3NzT3JpZ2luIjpmYWxzZX0=
name=Main Passkey
它在 https://webauthn.io/ 上有效吗?
是的,注册和认证
我刚刚尝试在这里的 meta 上注册一个新的 U2F 密钥,并在控制台中看到了这个错误,这可能解释了原因:
NotAllowedError: 操作超时或不允许。
参见:https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client。
我在 w3.org 上没有看到错误描述;所以是实现有问题吗?我似乎没有在控制台中看到错误,有什么我可以贡献的吗?
我们需要看一下这个——我认为自我们首次开发此功能以来,浏览器已经实施了额外的要求(如链接中所述)。
感谢 @agr 发现此问题,我已在此处推送了修复:
将您的 Discourse 更新到最新版本现在应该可以解决此问题,但如果您仍然遇到任何问题,请告知我们。
注册工作正常。太快了 ![]()
但是 login / auth.js 返回给我一个 500 响应
确认了;我看到了:
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'
在我尝试使用 Solo 2 时日志中出现此错误
感谢 @agr 检查,我刚刚推送了另一个修复:
希望不会再有任何问题了
,但如果您仍然遇到任何问题,请告诉我!
感谢您快速修复。我也尝试将 Nitrokey 用于双因素认证 (2FA),它在注册和登录时都奏效了。太棒了!!