Ich versuche also, einen Bildanspruch in unserem OIDC JWT zu verwenden, der eine URL zu einem Bildspeicher ohne zusätzliche Authentifizierung ist. Wir verwenden Entra, daher verweist Userinfo normalerweise auf den Graph-Endpunkt, und ohne Hinzufügen eines Bearer-Tokens schlägt dies fehl.
Wenn ich mir omniauth für OIDC ansehe, scheint es, dass das Bild zum Benutzer hinzugefügt wird, also habe ich damit herumgespielt.
Zuerst mussten wir das Discovery-Dokument spoofen, um den Userinfo-Endpunkt zu entfernen, was den Zugriff auf die JWT-Ansprüche ermöglicht, anstatt nur auf das, was in Userinfo enthalten ist. Dies scheint gut zu funktionieren, basierend auf dem Inhalt der Tabelle associated_user_accounts und detaillierten OIDC-Protokollereignissen sehe ich, dass der Bildanspruch verifiziert und gespeichert wird.
Ich sehe Hinweise in der Tabelle uploads, dass der import_url_for_user zu funktionieren scheint, aber der Pfad “user_avatar///.png” ist eine Sackgasse.
Ich habe mit den Discourse Connect Avatar-Einstellungen experimentiert und glaube nicht, dass dieses Modell als externes System zählt, aber ich habe es auch versucht. Ich habe auch den Domainnamen des Avatarservers zur Liste der “internen Hosts” hinzugefügt, da wir an SSRF dachten, aber das scheint nicht der Fall zu sein. Für Benutzer sehe ich, dass “Benutzerdefiniertes Bild” aktiviert ist, aber der Link scheint defekt zu sein, daher bin ich mir nicht sicher, ob es versucht und einfach nicht die Kurve kriegt.
Hatte jemand hier Erfolg bei der Verwendung von JWT-Ansprüchen zur Bereitstellung der Avatar-URL und kann vielleicht hervorheben, was ich vermisse? Gibt es eine Fehlersuche rund um user_avatar, die ich untersuchen kann und die vielleicht Licht ins Dunkel bringt?