Continuando la discusión desde Plugin SAML en el repositorio. Multisitio:
Estoy intentando utilizar el siguiente código en el plugin SAML para crear automáticamente una cuenta después de que un usuario se haya autenticado correctamente, de modo que los usuarios no se encuentren con el cuadro de diálogo de inicio de sesión en el que podrían cambiar su correo electrónico, nombre de usuario y nombre. Prefiero que los usuarios no tengan control sobre esas configuraciones y que, en su lugar, se establezcan automáticamente según la autenticación SAML.
Mi archivo app.yml tiene:
...
# Forzar el atributo fullName de la afirmación SAML para anular el atributo name, de modo que
# el nombre completo del usuario se mapee al campo Nombre de Discourse y ayude a
# complementar el campo Nombre de usuario numérico en las publicaciones.
DISCOURSE_SAML_ATTRIBUTE_STATEMENTS: "name:fullName"
DISCOURSE_SAML_AUTO_CREATE_ACCOUNT: true
...
Cuando pruebo esta función, veo el siguiente error en los registros:
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"
¿Alguna idea sobre si necesito configurar el plugin para forzar que “uid” se establezca mediante uno de los atributos de la afirmación SAML?
Cuando DISCOURSE_SAML_AUTO_CREATE_ACCOUNT está establecido en false o no está presente, la autenticación basada en SAML funciona, pero el usuario ve el cuadro de diálogo en el que puede modificar su correo electrónico, nombre de usuario y nombre.
