我是一个自托管 Discourse 实例的用户,我看到了添加 passkey 的按钮。当我点击时,我的 Vaultwarden 插件会打开以添加它,但随后我收到一条消息:
密匙注册过程已超时、被取消或不允许。
我使用的是 Firefox,并且已经添加了 passkeys,例如 GitHub,所以它在 Firefox 上与 Vaultwarden 一起工作,但由于某种原因在此特定的 Discourse 论坛上不起作用。我已经告知管理员,他们说它已启用(否则我就看不到添加按钮,对吧?)
我是一个自托管 Discourse 实例的用户,我看到了添加 passkey 的按钮。当我点击时,我的 Vaultwarden 插件会打开以添加它,但随后我收到一条消息:
密匙注册过程已超时、被取消或不允许。
我使用的是 Firefox,并且已经添加了 passkeys,例如 GitHub,所以它在 Firefox 上与 Vaultwarden 一起工作,但由于某种原因在此特定的 Discourse 论坛上不起作用。我已经告知管理员,他们说它已启用(否则我就看不到添加按钮,对吧?)
您好 Jappe,
感谢您的来信。由于这是 Vaultwarden 的一个特定问题,我已经将其移至一个单独的主题(顺便说一句,他们有自己的 Discourse 论坛
)。
您是否知道这个问题只发生在 Firefox 上的 Vaultwarden 扩展程序上?您是否尝试过其他浏览器?
如果我要测试这个问题,我需要设置一个 Vaultwarden 服务器吗?
我认为 vaultwarden 和 bitwarden Firefox 插件不是问题,因为 passkey 集成可以与其他服务(如 GitHub)配合使用。
我也可以在 discourse 的 yml 文件 中找到这个特定消息,这表明存在 not_allowed_error。
我不知道,实际上它是 Firefox 的官方 bitwarden 扩展,但我使用的是自托管的 Vaultwarden 实例。
我也在 Fedora 上尝试了 Firefox,最初的问题发生在 Windows 上的 Firefox。
我现在将在 Windows 上使用 Google Chrome 进行测试。
好的,在那里也失败了,但我查看了开发者工具并发现了这个:
Content-Security-Policy: 页面设置已阻止从 blob:https://dietpi.com/b23d5e0c-dc61-4df8-b71b-88c5cd7f271a 加载资源 (“img-src”)。
Object { jqXHR: {…}, textStatus: “error”, errorThrown: “” }
errorThrown: “”
jqXHR: Object { readyState: 4, getResponseHeader: getResponseHeader(e), getAllResponseHeaders: getAllResponseHeaders(), … }
abort: function abort(e)
always: function always()
catch: function catch(e)
done: function add()
fail: function add()
getAllResponseHeaders: function getAllResponseHeaders()
getResponseHeader: function getResponseHeader(e)
jqTextStatus: “error”
overrideMimeType: function overrideMimeType(e)
pipe: function pipe()
progress: function add()
promise: function promise(e)
readyState: 4
requestedUrl: “/forum/u/register_passkey.json”
responseJSON: Object { errors: (1) […] }
responseText: '{"errors":["The origin of the authentication request does not match the server origin."]}'
setRequestHeader: function setRequestHeader(e, t)
state: function state()
status: 401
statusCode: function statusCode(e)
statusText: “error”
then: function then(e, n, i)
<prototype>: Object { … }
textStatus: “error”
<prototype>: Object { … }
__defineGetter__: function __defineGetter__()
__defineSetter__: function __defineSetter__()
__lookupGetter__: function __lookupGetter__()
__lookupSetter__: function __lookupSetter__()
__proto__:
constructor: function Object()
hasOwnProperty: function hasOwnProperty()
isPrototypeOf: function isPrototypeOf()
propertyIsEnumerable: function propertyIsEnumerable()
toLocaleString: function toLocaleString()
toString: function toString()
valueOf: function valueOf()
<get __proto__()>: function __proto__()
<set __proto__()>: function __proto__()
chunk.6d10396b901f5b95b67e.d41d8cd9.js:1:2114375
createPasskey https://dietpi.com/forum/assets/chunk.6d10396b901f5b95b67e.d41d8cd9.js:1
Chrome 上情况差不多:
Failed to load resource: the server responded with a status of 401 ()
chunk.6d10396b901f5b95b67e.d41d8cd9.js:1 Object
所以可能是服务器配置错误?
是的,或者使用提供商。Bitwarden 本身有个人免费套餐。
如果需要,我还可以提供更多信息和测试。
已进行更多测试:
我点击“添加”按钮,弹出窗口出现,此时控制台中已出现 createPasskey 函数的错误。
Object { jqXHR: {…}, textStatus: “error”, errorThrown: “” }
chunk.6d10396b901f5b95b67e.d41d8cd9.js:1:2114375
createPasskey https://dietpi.com/forum/assets/chunk.6d10396b901f5b95b67e.d41d8cd9.js:1
然后添加到保险库的操作失败,因为没有创建 passkey。
前面帖子中的第一个错误消息可能与此问题无关,而是与 dietpi 服务器上的某些 CORS 问题有关。 关于 Content-Security-Policy 的第一个错误消息来自 Dark-reader 扩展。
是的,从您发布的日志来看,主要的错误消息是:
身份验证请求的来源与服务器来源不匹配。
Passkey 和安全密钥注册会检查注册网站的 URL 在客户端(浏览器)和服务器之间是否匹配。最有可能的是,此实例存在不匹配,有时是 http 与 https 的问题,有时是代理的问题。
我首先会检查“强制 https”站点设置是否已启用。
另外,@JappeHallunken,为了排除任何一般性问题……你可以在这里(meta)为你的账户添加一个通行密钥吗?
是的,我成功地在这里的元(meta)上添加了一个通行密钥(passkey)。
我会把这个反馈回去!谢谢你的帮助。
我们这边遇到的第一个问题是 CSP,它不允许 blob: 图像源。现在确实似乎缺少/无效的设置,但我找不到它:
[AdminSidebar] Custom link root_admin_additional_root_admin_upgrade must have a valid I18n label, got admin.docker.upgrade_tab chunk.6d10396b901f5b95b67e.d41d8cd9.js:1:2588880
Object { jqXHR: {…}, textStatus: “error”, errorThrown: “” }
errorThrown: “”
jqXHR: Object { readyState: 4, getResponseHeader: getResponseHeader(e), getAllResponseHeaders: getAllResponseHeaders()
, … }
textStatus: “error”
<prototype>: Object { … }
chunk.6d10396b901f5b95b67e.d41d8cd9.js:1:2114375
createPasskey https://dietpi.com/forum/assets/chunk.6d10396b901f5b95b67e.d41d8cd9.js:1
但我猜你说得对,这只是 401 的一个症状。
HTTPS 已经通过 Cloudflare 代理和 Web 服务器重定向以及 force https 设置、HSTS、预加载等强制执行,无法通过纯 HTTP 访问此 Discourse 实例
。
问题可能在于 Discourse 位于 /forum 子路径,而不是域的根目录?
我认为你可能是对的,这个问题似乎与子文件夹设置有关。我稍后会仔细查看代码。
完成。@JappeHallunken 你可以重试吗?
是的,现在可以了,太棒了!\n感谢大家的帮助!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.