forum.beginner.center/:1 Conteúdo Misto: A página em 'https://forum.beginner.center/' foi carregada via HTTPS, mas solicitou uma fonte insegura 'http://forum.beginner.center/fonts/JetBrainsMono-Regular.woff2?v=0.0.19'. Esta solicitação foi bloqueada; o conteúdo deve ser servido via HTTPS.
forum.beginner.center/:1 Conteúdo Misto: A página em 'https://forum.beginner.center/' foi carregada via HTTPS, mas solicitou uma fonte insegura 'http://forum.beginner.center/fonts/JetBrainsMono-Bold.woff2?v=0.0.19'. Esta solicitação foi bloqueada; o conteúdo deve ser servido via HTTPS.
app.js:270 ℹ️ Discourse v3.5.0.beta9-dev — https://github.com/discourse/discourse/commits/33dfd7dba9 — Ember v5.12.0
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Report Only] Recusado(a) a avaliar uma string como JavaScript porque 'unsafe-eval' não é uma fonte permitida de script na seguinte diretiva de Política de Segurança de Conteúdo: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
analytics.eu.umami.is/script.js:1 Falha ao carregar recurso: net::ERR_CONNECTION_CLOSED
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
A Prevenção de Rastreamento bloqueou o acesso ao armazenamento para <URL>.
deprecado.js:62 Aviso de Depreciação: Definir a propriedade timezone do objeto user está depreciada. Use o objeto user_option em vez disso [depreciado desde Discourse 2.9.0.beta12] [remoção em Discourse 3.0.0.beta1] [id de depreciação: discourse.user.userOptions]
a @ deprecated.js:62
security:1 O processamento de Autofocus foi bloqueado porque um documento já possui um elemento focado.
completion_list.html:14 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/heuristicsRedefinitions.js net::ERR_FILE_NOT_FOUND
completion_list.html:13 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/extensionState.js net::ERR_FILE_NOT_FOUND
completion_list.html:12 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/utils.js net::ERR_FILE_NOT_FOUND
ajax.js:188 POST https://forum.beginner.center/u/register_passkey.json 401 (Não Autorizado)
send @ jquery.js:9940
ajax @ jquery.js:9521
o @ ajax.js:188
(anonymous) @ rsvp-DaQAFb0W.js:435
e @ rsvp-DaQAFb0W.js:451
A @ ajax.js:201
registerPasskey @ user.js:650
createPasskey @ user-passkeys.gjs:86
await in createPasskey
didConfirm @ user-passkeys.gjs:140
didConfirmWrapped @ dialog.js:134
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(anonymous) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(anonymous) @ d-button.gjs:138
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_later @ index.js:823
later @ index.js:652
T @ index.js:562
_triggerAction @ d-button.gjs:135
click @ d-button.gjs:93
user-passkeys.gjs:104 {jqXHR: {…}, textStatus: 'error', errorThrown: ''}errorThrown: \"\"jqXHR: abort: ƒ (e)always: ƒ ()catch: ƒ (e)done: ƒ ()fail: ƒ ()getAllResponseHeaders: ƒ ()getResponseHeader: ƒ (e)jqTextStatus: \"error\"overrideMimeType: ƒ (e)pipe: ƒ ()progress: ƒ ()promise: ƒ (e)readyState: 4requestedUrl: \"/u/register_passkey.json\"responseJSON: {errors: Array(1)}responseText: \"{\\\"errors\\\":[\\\"The origin of the authentication request does not match the server origin.\\\"]}\"setRequestHeader: ƒ (e,t)state: ƒ ()status: 401statusCode: ƒ (e)statusText: \"error\"then: ƒ (e,i,n)[[Prototype]]: ObjecttextStatus: \"error\"[[Prototype]]: Objectconstructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()__proto__: (...)get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()
createPasskey @ user-passkeys.gjs:104
await in createPasskey
didConfirm @ user-passkeys.gjs:140
didConfirmWrapped @ dialog.js:134
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(anonymous) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(anonymous) @ d-button.gjs:138
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_later @ index.js:823
later @ index.js:652
T @ index.js:562
_triggerAction @ d-button.gjs:135
click @ d-button.gjs:93
Você pode garantir que seu site esteja configurado para servir tudo em https? A verificação de desafio de chave de acesso exige que todas as solicitações passem por https. Além disso, o domínio entre o navegador e o servidor deve corresponder exatamente. Se houver uma incompatibilidade em algum lugar, a verificação falhará.
Temos uma configuração para isso, force_https, você pode tentar, pode ajudar (embora tenha cuidado, também pode bloquear você se o servidor não estiver configurado corretamente).
Desculpe pelo atraso. O problema aqui está realmente relacionado ao seu proxy. Não consigo dizer exatamente o que é, mas um dos seus nomes de domínio, protocolo (http ou https) e porta está atrapalhando.
O Passkeys verifica se o frontend e o backend são executados no mesmo domínio, protocolo e porta. Se houver uma incompatibilidade em um desses itens, você receberá um erro como este.
No Rails CLI, você pode tentar o seguinte:
DiscourseWebauthn.origin
e compará-lo com a URL que você usa para acessar o site no navegador? Os dois devem corresponder.
Pelo que entendi do Padrão Webauthn para Passkey, ele depende de uma conexão segura entre a Parte Confiável (Discourse) e o Cliente (Navegador ou dispositivo móvel) e o Autenticador (por exemplo, um yubikey). Assim, precisamos de https para a comunicação vinda do aplicativo Discourse. Forçar https pode ser a solução, mas apenas um cabeçalho para
proxy_set_header X-Forwarded-Proto https;
também pode ser suficiente. Se forçar https ajudar (o que é recomendado de qualquer forma), tudo ficará bem.