Yubikey가 작동하지 않아요

안녕하세요,

Discourse를 설치했고, 전반적으로 잘 작동하고 있습니다. 하지만 Yubikey를 보안 키로 추가하려고 하면 계속 다음과 같은 오류가 발생합니다:

The origin of the authentication request does not match the server origin.

이 문제를 해결할 수 있는 특정 설정 옵션을 찾을 수 없습니다. CORS를 설정해 보았지만 아무런 차이가 없었습니다. 어떻게 하면 작동하게 할 수 있을까요?

미리 감사드립니다 :slight_smile:

포럼의 호스트네임이 브라우저에서 접근하는 주소와 다를 수 있나요?

예를 들어, app.yml에 설정된 호스트네임이 브라우저에 입력한 주소와 동일한가요?

호스트네임은 일치합니다. 다만 인스턴스가 nginx 프록시 뒤에 위치해 있어 문제가 여기에 있는 것일 수도 있습니다. 하지만 프록시 구성은 사실상 SSL 오프로드(SSL offload) 방식이므로, 연결 구조는 다음과 같습니다:

웹 브라우저 → Nginx 프록시 (https) → Discourse (http)

즉, 브라우저와 nginx 사이의 연결은 HTTPS이지만, 프록시와 discourse 사이의 연결은 80번 포트(HTTP)로 이루어집니다.

저는 테스트용 랩 머신에서도 CORS를 활성화했는데, 이쪽에서도 동일한 문제가 있었기 때문입니다. 하지만 완전한 HTTPS 환경에서 CORS를 설정했을 때야 비로소 Yubikey를 등록할 수 있었습니다. 또한 SSL 강제 사용도 활성화되어 있었습니다.

프록시 뒤에 있는 discourse의 CORS 설정에 http와 https를 모두 입력해 보았지만, 아무런 차이가 없었습니다. 따라서 이는 nginx 프록시 설정의 문제일 가능성이 높거나, 443번 포트에서 80번 포트로의 프록싱 대신 discourse의 443번 포트(HTTPS)로 프록싱하도록 변경해야 할 필요가 있을 것 같습니다.

우리도 같은 보고서를 가지고 있습니다. 또한 Discourse 앞에 TLS를 종결하는 nginx 리버스 프록시를 사용 중입니다. 에러 메시지는 서버 설정에서 무엇을 변경해야 하는지 파악하는 데 도움이 되지 않습니다.

코드 참조:

https://github.com/discourse/discourse/blob/main/lib/webauthn/security_key_base_validation_service.rb#L21-L24

https://github.com/discourse/discourse/blob/main/lib/webauthn/security_key_base_validation_service.rb#L58-L60

전체 HTTPS가 무엇을 의미하나요?