Webauthn support

정말 좋습니다!

다만 한 가지 작은 문제점이 있습니다: Safari/Mac에서 Web Authentication은 개발자 전용 기능이며 기본적으로 비활성화되어 있습니다. 활성화하면 잘 작동합니다. 하지만 Web Authentication이 비활성화된 경우 메시지나 경고를 표시해야 할 것 같습니다. 현재 기본 설정의 Safari에서는 등록 과정이 작동하지 않을 것이라는 것을 UI에서 전혀 알 수 없습니다(콘솔에 오류가 발생합니다):

11개의 좋아요

navigator.credentials을 사용하여 기능 감지를 할 수 있을 거라고 가정합니다.

9개의 좋아요

몇몇 사람들은 그것이 좋긴 하지만 추가 비용을 정당화하는 데 어려움을 겪습니다 :smiley:

7개의 좋아요

아, 미안해요. navigator.credentials.get에 대한 기능 검사는 했지만 create는 하지 않았어요. 바로 수정할게요!

8개의 좋아요

최근 커밋이 정상적으로 작동하는 것 같습니다. 방금 안드로이드 폰에서 지문 인식을 이용한 2단계 인증을 사용할 수 있었습니다.

6개의 좋아요

Penar 씨, 이 문제에 대한 수정 사항을 준비했습니다. Safari에서 확인해 주실 수 있을까요? [FIX] Check webauthn support when registering security keys - Pull Request #8146 - discourse/discourse - GitHub . 해당 기능이 비활성화된 상태의 Safari에서 제가 사용하고 있는 기능 감지 방식이 제대로 작동할지 확실하지 않습니다.

9개의 좋아요

샘이 먼저 머지를 처리했지만, 사파리에서는 잘 보입니다. 마틴, 감사합니다!

10개의 좋아요

맞아요, 하지만 이 경우에는 디스커스에서 일반적인 업무의 일부이므로 비용을 우리가 부담할 거예요. 그 점이 명확하지 않았다면 죄송하지만, 이제 명확해지셨나요?

9개의 좋아요

WebAuthn 지원에 축하드립니다! webauthn gem 대신 자체 솔루션을 구현하신 점이 흥미롭네요. 해당 gem에 대한 피드백이 있으시면 말씀해 주시면 감사하겠습니다 :smiley:

구현을 확인해 보니 알고리즘 -7(ES256)만 지원하고 있습니다. 하지만 Windows Hello 플랫폼 인증기(TPM 2.0 하드웨어 기반)는 마이크로소프트 문서에 따라 -257(RS256)을 요구합니다. TPM 2.0은 2016년 7월 28일부터 새로운 Windows 10 데스크톱 모델에 필수로 요구되고 있으므로, 무시할 수 없는 상당한 규모의 하드웨어를 의미합니다.

“로그인 플로우” 목업에 대한 제안 하나: WebAuthn에는 공식 로고가 있어, 일반적인 지문 이미지 대신 이를 사용할 수 있습니다. 지문 외에도 얼굴 인식, 스와이프 패턴 또는 PIN은 사용자 인증의 일반적인 옵션입니다.

10개의 좋아요

@Martin_Brennan :arrow_double_up:에 대해 어떤 의견이 있으신가요?

6개의 좋아요

Rafe, 피드백 주셔서 감사합니다. 그렇다면 여기서 추가 알고리즘을 지원해야 할 것 같습니다. 그리고 공식 로고 링크도 감사합니다. 처음에 알고리즘을 하나만 설정한 이유는, 모든 알고리즘 간의 미묘한 차이점에 대해 확신이 서지 않았고 제가 찾을 수 있었던 모든 예제에서 ES256이 사용되고 있었기 때문에, V1에서 동작하도록 최소한의 지원 알고리즘만 추가하자는 생각이었기 때문입니다.

그리고 당시 왜 제미나를 사용하지 않았는지에 대해 말씀드리자면, 이 결정에 대해 꽤 많이 고민했고 언젠가 이 결정에 대해 질문을 받을 것임을 알고 있었습니다. 구현 방식을 더 잘 이해하기 위해 제미나의 코드 중 상당 부분을 읽어 보았습니다. 주요 이유는 다음과 같습니다:

  1. Discourse에 추가적인 의존성을 원치 않았습니다. 해당 제미나의 코드가 아무리 훌륭하더라도, 모든 제미나 의존성은 추가적인 오버헤드를 발생시킵니다.
  2. Discourse의 이러한 중요한 보안 구성 요소가 어떻게 작동하는지에 대해 충분히 이해하고 싶었습니다. 이른바 “블랙박스” 없이 코드를 Discourse 코어 내에 두면 명확해지고 확장하기가 더 쉬울 것이라 생각했습니다. (제미나 자체나 그 복잡성을 비판하려는 의도는 아니며, 사람들이 직접 코드를 확인해 볼 수 있고, 저는那里的 흐름을 따라가는 것이 꽤 쉬웠습니다.)
  3. WebAuthn을 실행하는 데 필요한 최소한의 코드만 추가하고 싶었습니다. 예를 들어, 초기 구현에서는 인증(attestation)을 제외했습니다. 우리가 필요한 것은 스패너 하나뿐인데, 왜 전체 공구함을 추가해야 하느냐는 생각이었죠.

그러나 제 판단이 잘못되었을 수도 있습니다. 인증(attestation), 더 많은 지원 알고리즘 등 WebAuthn 지원의 V2, V3 등으로 넘어가게 된다면, 우리가 이른바 "WebAuthn 전문가"가 되는 것이 너무 부담스러워질 수 있습니다. 그 시점에 와서 제미나 사용을 재평가할 수 있을 것이라 생각합니다.

16개의 좋아요

추가 RS256 알고리즘에 대한 지원이 이제 병합되었습니다. FEATURE: Support RS256 algorithm for webauthn - Pull Request #8385 - discourse/discourse - GitHub

14개의 좋아요

iOS 13.3와 macOS Catalina 10.15.2가 이제 FIDO2 인증도 지원하는 것 같습니다 :partying_face:

이 업데이트에는 버그 수정 및 기타 개선 사항도 포함되어 있습니다. 이 업데이트:

  • Safari에서 NFC, USB, Lightning FIDO2 호환 보안 키 지원 추가
8개의 좋아요

아쉽지만 아이폰은 이를 위해 서드파티 장치가 필요하네요. iOS++가 장치 인증과 보안 칩을 내장해 이 기능을 기본적으로 지원하길 바랍니다. 윈도우, macOS, 안드로이드처럼요.

9개의 좋아요

Discourse에 로그인할 수 있게 되다니 정말 설레네요!!

사실 내장 인증기(authenticator) 지원이 아직 없다는 점이 좀 놀랍긴 하네요… 그래도 어쨌든 기쁜 소식이에요 - 계속 기대를 해볼게요.

7개의 좋아요

호스팅된 Discourse 인스턴스에서 일부 사용자의 2FA 활성화 표시와 관련하여 UI의 불일치를 발견했습니다:

‘스태프’ 사용자 전체 목록에서 제 계정은 2FA가 활성화된 것으로 표시되지 않습니다:

  • 계정 요약 페이지에서는 '2단계 인증 관리’라는 버튼 텍스트로 보아 2FA가 켜져 있는 것으로 보입니다.

  • 2단계 인증 설정 화면에서는 보안 키가 활성화되어 있고, 2차 인증 요건을 비활성화할 수 있다고 표시됩니다.

  • 같은 인스턴스에서 보안 키 없이 토큰 기반 인증기를 선택한 다른 사용자들은 ‘전체 사용자’ 목록에서 자물쇠 아이콘이 표시됩니다.

이것이 UI 버그인지, 아니면 이 플랫폼에서 보안 키만 추가하는 것이 2FA로 충분한지 아닌지 알려주시면 감사하겠습니다.

5개의 좋아요

이 문제에 대해 확인해 보겠습니다. 하지만 UI의 2FA 섹션이 모든 내용을 올바르게 표시하고 있다면, 사용자 목록에 UI 버그가 있는 것 같다는 것이 제 추측입니다. 신고해 주셔서 감사합니다!

9개의 좋아요

문제가 바로 그거였어요. 수정 작업이 진행 중이고, 가능해지는 대로 병합할게요. FIX: Admin user list not showing 2FA icon for only security keys enabled - Pull Request #8839 - discourse/discourse - GitHub

수정: 이제 해결되었습니다.

11개의 좋아요

위대한 새로운 세계에 오신 것을 환영합니다

애플은 구글, 인텔, 마이크로소프트, 삼성과 같은 거대 기업들이 이미 참여하고 있는 FIDO 얼라이언스(또는 Fast Identity Online)에 가입했습니다.

12개의 좋아요

iOS 14에서는 TouchID / FaceID를 사용하여 이 기능이 작동합니다.

11개의 좋아요