When using SSO with sso overrides avatar: true, Discourse seems to download the avatar and always serve it locally instead of linking directly to the URL provided.
Would it make more sense to allow avatars to serve directly from the avatar_url provided? As is, for each avatar shown it hits Discourse backend somewhat needlessly. Perhaps this could be a SSO option?
If the concern is that avatars may go missing, that could be handled with the image onerror event that fallback’s src to the locally downloaded copy (or show a default one). What I don’t know is if too large avatars images can be constrained with CSS alone.
I believe disabling download_remote_images_to_local should solve your issue, although this will also serve images within posts remotely instead of locally.
Interesting. I know that the OIDC Plugin allows you to override email on every login, maybe something like this would be possible for avatar’s being overwritten by SSO as well.
If the SSO avatar is in the format of https://central.avatar.service/<username> you can use the external_system_avatars_url site setting to get this feature.
متابعةً لهذا بعد عامين، أعتقد أنني أسأت فهم شيء ما سابقًا، ومع ذلك، ما زلت أعتقد أن هناك تحسينًا سهلاً هنا للأداء.
في السابق، كنت أعتقد أن الصور الرمزية يتم تخزينها محليًا (خادم Discourse نفسه) وتساءلت لماذا لا يتم تقديمها مباشرة من عنوان URL الخارجي للصور الرمزية لـ SSO بدلاً من الوصول إلى Discourse. ومع ذلك، بعد بعض الفحص، أرى الآن أن الصور الرمزية الخارجية القادمة من SSO تم تحميلها بالفعل إلى مساحة التخزين الكائنية (مثل S3) وبالأحجام المتعددة المطلوبة.
لذلك، إذا فهمت بشكل صحيح، فإن Discourse حاليًا يقوم بتمرير الصور الرمزية من مساحة التخزين الكائنية إلى العميل. ومع ذلك، يبدو أن هذا السلوك خاص بالصور الرمزية الخارجية لـ SSO حيث تأتي الصور الرمزية هنا في meta مباشرة من مساحة التخزين الكائنية (المقدمة عبر شبكة توصيل المحتوى). ولكن عند استخدام SSO مع عناوين URL الخارجية، تكون عناوين URL للصور الرمزية في الشكل
حيث يصل إلى rails لكل صورة رمزية معروضة (قبل أن يقوم العميل بتخزينها مؤقتًا).
وإذا فهمت الكود بشكل صحيح، فهناك حتى إعداد للسماح بإعادة توجيه بدلاً من تمريرها، ولكن في تلك المرحلة، يكون قد وصل بالفعل إلى rails، وإعادة التوجيه تضيف فقط وقتًا إلى وقت التحميل للعميل.
ألن يكون من الأسرع ربط الصور الرمزية بمساحة التخزين الكائنية (مع إمكانية تقديمها من شبكة توصيل محتوى) مع تحرير بعض موارد rails في نفس الوقت؟ /cc @Falco