ich integriere Discourse SSO, stoße jedoch auf ein Problem: Der angelegte Benutzer erhält Administratorrechte, obwohl im SSO-Payload ausdrücklich angegeben ist, dass dies nicht der Fall sein soll.
Ich verwende die neueste Beta-Version: 2.8.0.beta6 [ f3273bd43e ]
Ich habe es gerade mit omar+member9@306.dev versucht, das eine völlig andere Domain ist und nicht in DISCOURSE_DEVELOPER_EMAILS enthalten ist. Das Problem besteht jedoch weiterhin: Der Benutzer erhielt Admin-Zugriff.
Der API-Schlüssel, den ich für die Signierung des SSO verwende, gehört einem Admin. Hat das Auswirkungen?
Ich habe SSO auf einer bestehenden Discourse-Seite integriert und beobachte dieses Verhalten.
Die Seite läuft in Docker (discourse_docker-Repository).
Ich habe mich im Container angemeldet und auf die PostgreSQL-Datenbank zugegriffen. Das Benutzerkonto hat in der Datenbank das Admin-Flag auf „false" gesetzt, sodass es nicht durch die Methode „make_developer_admin" aktualisiert wird.
Um das Debuggen von DiscourseConnect zu unterstützen, können Sie die Site-Einstellung verbose_discourse_connect_logging aktivieren. Durch Aktivieren dieser Einstellung werden ausführliche Diagnoseinformationen unter YOURSITE.com/logs angezeigt. Stellen Sie sicher, dass Sie das Kontrollkästchen warnings am Ende von YOURSITE.com/logs auswählen.
Es sieht nach einem Filterfehler mit der ActiveRecord-API aus. Ich habe die Abfragen protokolliert und sehe keine userid im where-Filter. Es scheint, als würden die Benachrichtigungsdaten global abgerufen.
Vermutlich passiert dasselbe bei Foren und Themen: Der userid-Filter wird irgendwie ignoriert, und es werden alle Daten abgerufen.
Es sieht so aus, als würde user.notifications den Filter nicht anwenden. Ich habe manuell eine where-Bedingung in den Code eingefügt, wodurch die Anzeige der Modal-Benachrichtigungen behoben wurde. Auf der Detailseite wird jedoch ein anderer Codepfad verwendet, sodass dort weiterhin alles angezeigt wird. Was ist die eigentliche Lösung?
Ich habe einen neuen Docker-Container von Grund auf neu erstellt und die Assets/Daten dorthin verschoben – das hat das Problem behoben.
Das Neuaufbauen des bestehenden Containers hat nicht geholfen.