Continuando a discussão de Plugin SAML no repositório. Multissítio:
Estou tentando utilizar o seguinte código no plugin SAML para criar automaticamente uma conta após um usuário autenticar com sucesso, de modo que os usuários não sejam confrontados com a caixa de diálogo de login na qual poderiam, em tese, alterar seu e-mail, nome de usuário e nome. Preferiria que os usuários não tivessem controle sobre essas configurações e, em vez disso, que elas fossem definidas automaticamente com base na autenticação SAML.
Meu arquivo app.yml contém:
...
# Forçar o atributo fullName da afirmação SAML para sobrescrever o atributo name, de modo que
# o nome completo do usuário será mapeado para o campo Nome do Discourse e ajudará
# a complementar o campo Nome de Usuário numérico nas postagens.
DISCOURSE_SAML_ATTRIBUTE_STATEMENTS: "name:fullName"
DISCOURSE_SAML_AUTO_CREATE_ACCOUNT: true
...
Ao testar esse recurso, vejo o seguinte erro nos logs:
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"
Alguma ideia se preciso configurar o plugin para forçar que o “uid” seja definido por meio de um dos atributos da afirmação SAML?
Quando DISCOURSE_SAML_AUTO_CREATE_ACCOUNT está definido como false ou não está presente, a autenticação baseada em SAML funciona, mas o usuário vê a caixa de diálogo na qual pode modificar seu e-mail, nome de usuário e nome.
