Fortsetzung der Diskussion aus SAML-Plugin im Repository. Multisite:
Ich versuche, den folgenden Code im SAML-Plugin zu verwenden, um automatisch ein Konto zu erstellen, nachdem ein Benutzer erfolgreich authentifiziert wurde, damit Benutzer nicht mit dem Anmelde-Dialog konfrontiert werden, in dem sie theoretisch ihre E-Mail-Adresse, ihren Benutzernamen und ihren Namen ändern könnten. Ich bevorzuge es, dass Benutzer keine Kontrolle über diese Einstellungen haben und diese stattdessen automatisch basierend auf der SAML-Authentifizierung festgelegt werden.
Meine app.yml-Datei enthält:
...
# Erzwingt das Attribut fullName aus der SAML-Bestätigung, um das Attribut name zu überschreiben, damit
# der vollständige Name des Benutzers dem Namensfeld von Discourse zugeordnet wird und dazu beiträgt,
# das numerische Benutzername-Feld in Beiträgen zu ergänzen.
DISCOURSE_SAML_ATTRIBUTE_STATEMENTS: "name:fullName"
DISCOURSE_SAML_AUTO_CREATE_ACCOUNT: true
...
Beim Testen dieser Funktion sehe ich folgenden Fehler in den Protokollen:
Completed 500 Internal Server Error in 175ms (ActiveRecord: 0.0ms)
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "uid" violates not-null constraint
DETAIL: Failing row contains (2, 3, null, saml, user@company.com, Smith, John, 2019-06-03 21:40:55.44066, 2019-06-03 21:40:55.44066).
: INSERT INTO "oauth2_user_infos" ("user_id", "provider", "email", "name", "created_at", "updated_at") VALUES (3, 'saml', 'user@company.com', 'Smith, John', '2019-06-03 21:40:55.440660', '2019-06-03 21:40:55.440660') RETURNING "id")
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:69:in `async_exec_params'
Failed to handle exception in exception app middleware : PG::NotNullViolation: ERROR: null value in column "uid" violates not-null constraint
DETAIL: Failing row contains (2, 3, null, saml, user@company.com, Smith, John, 2019-06-03 21:40:55.44066, 2019-06-03 21:40:55.44066).
: INSERT INTO "oauth2_user_infos" ("user_id", "provider", "email", "name", "created_at", "updated_at") VALUES (3, 'saml','user@company.com', 'Smith, John', '2019-06-03 21:40:55.440660', '2019-06-03 21:40:55.440660') RETURNING "id"
Haben Sie eine Idee, ob ich das Plugin konfigurieren muss, um festzulegen, dass „uid" über eines der Attribute aus der SAML-Bestätigung gesetzt wird?
Wenn DISCOURSE_SAML_AUTO_CREATE_ACCOUNT entweder auf false gesetzt ist oder nicht vorhanden ist, funktioniert die SAML-basierte Authentifizierung, aber der Benutzer sieht den Dialog, in dem er seine E-Mail-Adresse, seinen Benutzernamen und seinen Namen ändern kann.
