어떤 디스코urs에서도 패스키를 설정할 수 없습니다

본인의 소유가 아닌 하드웨어를 사용할 때, 비밀번호 대신 하드웨어 키를 사용하고 싶습니다. 이 목적으로 Nitrokey 3C를 준비했습니다.

Discourse에서 등록이 실패합니다. meta.discourse.org에서도 마찬가지입니다.

참고: Linux (Debian) + Chromium 환경에서 키를 2차 인증 수단으로 등록하는 것은 성공했지만, 로그인 시에는 작동하지 않습니다.

어떤 브라우저를 사용 중이신가요?

어떤 오류가 발생하나요?

개발자 콘솔에 추가적인 정보가 있나요?

이것은 Debian의 Chromium에서 발생하고 있습니다 (Ubuntu의 Firefox에서도 동일하며, Debian의 Firefox Nightly(snap)에서도 동일합니다).

키의 버튼을 누른 후

‘The passkey registration process either timed out, was cancelled or is not allowed.’

오류 메시지는 도움이 되지 않으며, 콘솔에서도 특별한 내용은 없습니다.

https://meta.discourse.org/u/register_passkey.json에 대한 요청은 {“status”:500,“error”:“Internal Server Error”} 페이로드와 함께 HTTP 500을 반환합니다.

요청 데이터가 도움이 될까요?

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/ 에서 작동하나요?

네, 가입하고 인증하는 겁니다

방금 메타에서 새로운 U2F 키를 등록하려고 해보았는데, 콘솔에 이 오류가 표시되고 있어요. 아마 이것이 원인을 설명하는 것 같습니다:

NotAllowedError: The operation either timed out or was not allowed.
  See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.

w3.org의 오류 설명을 이해할 수 없네요. 그래서 구현이 깨진 건가요? 콘솔에서 오류가 표시되지 않는 것 같은데, 제가 기여할 수 있는 부분이 있을까요?

이 문제를 살펴볼 필요가 있습니다. 처음 이 기능을 개발한 이후로 브라우저에서 추가 요구 사항이 구현되었을 것 같습니다(링크에 명시된 내용).

1개의 좋아요

@agr 님이 이 문제를 찾아내주셔서 감사합니다. 여기 수정 사항을 반영했습니다:

Discourse를 최신 버전으로 업데이트하면 이제 문제가 해결되어야 하지만, 그래도 문제가 발생하면 알려주세요.

2개의 좋아요

회원가입은 잘 작동했습니다. 빠르네요 :slight_smile:

하지만 로그인 / auth.js에서 500 응답이 반환됩니다.

1개의 좋아요

확인했습니다. 로그에서 Solo 2를 사용하려고 할 때 다음 내용이 표시됩니다:

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'
1개의 좋아요

@agr 님, 확인해 주셔서 감사합니다. 방금 또 다른 수정 사항을 푸시했습니다:

더 이상 문제가 발생하지 않기를 바랍니다 :crossed_fingers:, 하지만 여전히 문제가 발생하면 알려 주세요!

1개의 좋아요

빠른 수정에 감사드립니다. 2FA용으로 Nitrokey도 사용해 봤는데, 가입과 로그인 모두 정상적으로 작동했습니다. 정말 훌륭합니다!!

2개의 좋아요

이 주제는 9일 후 자동으로 닫혔습니다. 새로운 답글은 더 이상 허용되지 않습니다.