مشاكل استخدام passkeys مع vaultwarden

أنا مستخدم لمثيل Discourse مستضاف ذاتيًا، أرى الزر لإضافة مفاتيح المرور. عندما أنقر، يفتح ملحق Vaultwarden الخاص بي لإضافته، ثم أتلقى رسالة:

انتهت مهلة عملية تسجيل مفتاح المرور، أو تم إلغاؤها، أو غير مسموح بها."

أنا أستخدم Firefox وقد أضفت بالفعل مفاتيح المرور، على سبيل المثال لـ GitHub، لذا فهي تعمل على Firefox مع Vaultwarden ولكن لسبب ما ليست في هذا المنتدى المحدد من Discourse. أخبرت المسؤولين بذلك وقالوا إنه ممكّن (وإلا فلن أرى زر الإضافة، أليس كذلك؟)

إعجابَين (2)

مرحباً جابي،

شكراً لك على التواصل. لقد نقلت هذا إلى موضوع منفصل لأنه مشكلة محددة مع Vaultwarden (والذي لديه، بالمناسبة، منتدى Discourse الخاص به :tada:).

هل تعرف ما إذا كانت هذه المشكلة تحدث فقط مع امتداد Vaultwarden على Firefox؟ هل جربت متصفحات أخرى؟

إذا كنت سأقوم باختبار هذا، فهل سأحتاج إلى إعداد خادم Vaultwarden؟

4 إعجابات

أعتقد أن vaultwarden وإضافة Firefox لـ Bitwarden ليستا المشكلة، حيث أن تكامل المفاتيح السحرية يعمل مع خدمات أخرى مثل GitHub.
يمكنني أيضًا العثور على هذه الرسالة المحددة في ملف yml لـ discourse، مما يشير إلى not_allowed_error.

لا أعرف، في الواقع إنها إضافة Bitwarden الرسمية لـ Firefox، لكنني أستخدم نسخة Vaultwarden مستضافة ذاتيًا.
لقد جربت أيضًا Firefox على Fedora، وقد حدثت المشكلة الأولية على Firefox لنظام Windows.
سأقوم بالاختبار الآن باستخدام Google Chrome على نظام Windows.
حسنًا، فشل الأمر هناك أيضًا، لكنني نظرت إلى أدوات المطور ووجدت هذا:

إخراج وحدة تحكم Firefox
Content-Security-Policy: The page's settings blocked the loading of a resource at 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 نفسه لديه طبقة مجانية للاستخدام الشخصي.
يمكنني أيضًا تقديم المزيد من المعلومات والاختبار إذا لزم الأمر.

إعجاب واحد (1)

لقد أجريت المزيد من الاختبارات:
أنقر على زر “إضافة”، يظهر النافذة المنبثقة، وفي هذه المرحلة لدي بالفعل الخطأ في وحدة التحكم من الدالة createPasskey.

Object { jqXHR: {…}, textStatus: "error", errorThrown: "" }
chunk.6d10396b901f5b95b67e.d41d8cd9.js:1:2114375
    createPasskey https://dietpi.com/forum/assets/chunk.6d10396b901f5b95b67e.d41d8cd9.js:1

ثم تفشل عملية الإضافة الفعلية إلى الخزنة، لأنه لم يتم إنشاء أي مفتاح مرور.

رسالة الخطأ الأولى من المنشور السابق ربما لا تتعلق بهذه المشكلة، بل ببعض مشاكل CORS على خادم dietpi. رسالة الخطأ الأولى حول Content-Security-Policy نشأت من إضافة Dark-reader)

إعجاب واحد (1)

نعم، من السجلات التي نشرتها، رسالة الخطأ الرئيسية هي:

مصدر طلب المصادقة لا يتطابق مع مصدر الخادم.

تسجيل الدخول باستخدام المفتاح السري والمفتاح الأمني ​​يتحقق من أن عنوان URL للموقع الذي يقوم بالتسجيل يتطابق بين العميل (المتصفح) والخادم. على الأرجح أن هذا المثيل به عدم تطابق، وأحيانًا يكون http مقابل https، وأحيانًا أخرى يكون وكلاء.

أول شيء سأتحقق منه هو ما إذا كان إعداد الموقع force https ممكّنًا.

إعجابَين (2)

أيضًا، @JappeHallunken، فقط لاستبعاد أي مشاكل عامة… هل يمكنك إضافة مفتاح مرور إلى حسابك هنا على ميتا؟

إعجاب واحد (1)

نعم، تمكنت من إضافة مفتاح مرور بنجاح هنا على meta.

سأبلغ بهذا! شكراً لمساعدتك.

كانت المشكلة الأولى من جانبنا هي CSP، التي لم تسمح بمصادر صور blob:. الآن يبدو بالفعل أن هناك بعض الإعدادات المفقودة/غير الصالحة، ولكن لا يمكنني العثور عليها:

[AdminSidebar] يجب أن يكون لرابط `root_admin_additional_root_admin_upgrade` المخصص تسمية I18n صالحة، تم الحصول على `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 وإعادة توجيه خادم الويب وإعداد force https، و HSTS، والتحميل المسبق، وما إلى ذلك، لا توجد طريقة للوصول إلى مثيل Discourse هذا عبر HTTP عادي :wink:.

قد تكون المشكلة أن Discourse موجود في المسار الفرعي /forum، بدلاً من جذر النطاق؟

3 إعجابات

أعتقد أنك قد تكون على حق، يبدو أن المشكلة تتعلق بإعداد المجلد الفرعي. سألقي نظرة فاحصة على الكود قريبًا.

3 إعجابات

لقد قمت للتو بدمج https://github.com/discourse/discourse/commit/021a02c3d880448a9478ebdbd766bdfebd9c7cfe، @MichaIng، هل يمكنك إعادة بناء موقعك ومعرفة ما إذا كان ذلك يحل المشكلة؟

إعجابَين (2)

تم. @JappeHallunken هل يمكنك المحاولة مرة أخرى؟

3 إعجابات

نعم، إنه يعمل الآن، رائع!
شكراً للجميع على حل هذه المشكلة!

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.