Problema: SAML, usuário anonimizado e bloqueado

Passos para reproduzir:

  • O usuário A, um usuário SAML, existe
  • O administrador deseja que o usuário A não possa mais usar o Discourse
  • O administrador usa a função “anonymizar usuário” para o usuário A (todas as entradas são anonimizadas => isso é bom)
  • O administrador deseja bloquear o acesso futuro do usuário A e, portanto, deseja bloqueá-lo (função de bloquear usuário)

Observação: o usuário não foi removido do servidor SAML e ainda está ativo

Comportamento esperado:
Mesmo que o usuário ainda exista no servidor SAML, ele não deve conseguir fazer login porque está bloqueado.

Comportamento atual:
O usuário consegue fazer login.

Você já tentou suspender a conta de usuário no Discourse?

Desculpe, em vez de “bloquear”, quis dizer “suspender”.
Sim, tentei isso.

O problema é que o usuário é anonimizado e, portanto, o nome de usuário muda. Acho que o SAML não reconhece isso e adiciona um novo usuário, porque o SAML não consegue encontrar o usuário com seu nome de usuário (= porque o usuário foi anonimizado antes).

Acredito que o discourse-saml tenta encontrar o usuário com base no nome de usuário em discourse-saml/lib/saml_authenticator.rb at 230a58b2d86465ec8aa75fb755558d4fdda73773 · discourse/discourse-saml · GitHub

Acho que deve haver uma maneira de associar um usuário anonimizado aos dados do usuário SAML. Alguém sabe como e qual atributo validar?

Desculpe por reativar o tópico, mas estamos enfrentando exatamente este problema.

  • Os usuários só fazem login através do provedor sso.
  • O UsuárioA é bloqueado do fórum, mas não do sso.
  • O UsuárioA solicita a exclusão de dados do usuário, então anonimizamos a conta.
  • O UsuárioA consegue criar uma nova conta usando o login sso.

Existe alguma maneira de suspender manualmente um e-mail sem uma conta?

Apenas suspenda a nova conta?

Sim, você não quer que o usuário tenha a chance de interagir com o fórum, e você não quer monitorar constantemente quem são os novos usuários.

Deveria haver uma maneira de suspender e-mails, da mesma forma que você pode bloquear IPs.

Parece que você não entende como lidar com exclusões solicitadas pelo usuário e quando/onde isso não se aplica.

Quando um usuário se inscreve em seu site, você tem o direito de processar as informações fornecidas (e-mail e nome de usuário) para fins de registro. Esse processamento não termina quando eles são suspensos e tentam sair, levando seus brinquedos com eles.

Você não é obrigado a remover o e-mail de um usuário banido ou suspenso. O direito ao esquecimento não se sobrepõe ao propósito do processamento.

E como isso é compatível com o GDPR e o direito dos usuários de solicitar a exclusão de seus dados?

Se você mantiver a conta deles, isso ainda estará associado aos dados deles e você manterá as informações deles mesmo quando eles solicitarem a exclusão de dados do usuário.

Sinceramente, não sou especialista em direito.

O usuário pode retirar seu consentimento para o processamento de dados pessoais, mas o consentimento é apenas um dos fundamentos que podem tornar o processamento de dados legal sob o GDPR.

Outro fundamento pode ser o interesse legítimo do controlador (artigo 6.1, f: o processamento é necessário para os fins dos interesses legítimos perseguidos pelo controlador). Tal interesse legítimo pode ser garantir que o usuário não possa criar uma nova conta. Caso contrário, o usuário poderia abusar do GDPR para ter todos os registros apagados, incluindo o fato de que ele se comportou mal.

Artigo 17 do GDPR, ênfase minha.

  1. O titular dos dados terá o direito de obter do controlador a eliminação dos dados pessoais que lhe digam respeito sem demora injustificada e o controlador terá a obrigação de apagar os dados pessoais sem demora injustificada sempre que se aplique um dos seguintes fundamentos: (…)
    o titular dos dados retira o consentimento em que se baseia o processamento (…) e quando não houver outro fundamento jurídico para o processamento;

O que basicamente significa: sim, o fórum tem que remover os dados do usuário mediante solicitação, mas como o fórum suspendeu o usuário, eles precisam de uma maneira de garantir que o usuário não crie uma nova conta, então eles têm um bom motivo para manter o endereço de e-mail do usuário suspenso em arquivo, apesar da solicitação do usuário.

Uma maneira de fazer isso no Discourse é anonimizar o usuário (já suspenso) e, em seguida, alterar o endereço de e-mail anonimizado de volta para o endereço de e-mail real. Você também pode querer manter o IP de registro deles, com base no mesmo fundamento, e adicioná-lo à lista de bloqueio.