Проблема: SAML, анонимизированный пользователь и блокировка

Шаги для воспроизведения:

  • Существует пользователь A, использующий SAML
  • Администратор хочет, чтобы пользователь A больше не мог использовать Discourse
  • Администратор использует функцию «Анонимизировать пользователя» для пользователя A (все записи анонимизированы => это хорошо)
  • Администратор хочет заблокировать дальнейший доступ пользователя A и поэтому желает заблокировать его (функция блокировки пользователя)

Примечание: пользователь не удалён с SAML-сервера и остаётся активным.

Ожидаемое поведение:
Даже если пользователь всё ещё существует на SAML-сервере, он не должен иметь возможности войти в систему, так как он заблокирован.

Фактическое поведение:
Пользователь может войти в систему.

Пробовали ли вы приостановить учётную запись пользователя в Discourse?

Извините, вместо «block» я имел в виду «suspend». Да, я пробовал это.

Проблема в том, что пользователь анонимизируется, и поэтому меняется его имя пользователя. Я предполагаю, что SAML не распознаёт это и создаёт нового пользователя, так как SAML не может найти пользователя по его имени (поскольку пользователь был анонимизирован ранее).

Я думаю, что discourse-saml пытается найти пользователя по имени, как показано здесь: discourse-saml/lib/saml_authenticator.rb at 230a58b2d86465ec8aa75fb755558d4fdda73773 · discourse/discourse-saml · GitHub

Кажется, должен быть способ сопоставить анонимизированного пользователя с данными SAML. Знает ли кто-нибудь, как это сделать и какой атрибут нужно проверять?

Извините за всплывающее сообщение, но мы столкнулись с точно такой же проблемой.

  • Пользователи входят в систему только через провайдера SSO.
  • Пользователь A заблокирован на форуме, но не в системе SSO.
  • Пользователь A запросил удаление данных учетной записи, поэтому мы анонимизировали аккаунт.
  • Пользователь A может создать новую учетную запись, используя вход через SSO.

Есть ли способ вручную приостановить электронную почту без учетной записи?

Просто приостановить новый аккаунт?

Да, вы не хотите, чтобы у пользователя была возможность взаимодействовать с форумом, и вы не хотите постоянно отслеживать, кто такие новые пользователи.

Должна быть возможность приостанавливать отправку писем так же, как вы можете блокировать IP-адреса.

Похоже, вы не понимаете, как обрабатывать запросы пользователей на удаление данных и в каких случаях это не применимо.

Когда пользователь регистрируется на вашем сайте, вы имеете право обрабатывать предоставленную им информацию (электронную почту и имя пользователя) в целях регистрации. Эта обработка не прекращается, когда пользователь получает бан или приостановку аккаунта и пытается уйти, забирая свои «игрушки» с собой.

Вы не обязаны удалять электронную почту заблокированного или приостановленного пользователя. Право на забвение не отменяет законность цели обработки данных.

И как это совместимо с GDPR и правом пользователей запрашивать удаление своих данных?

Если вы сохраняете их аккаунт, он всё ещё связан с их данными, и вы храните их информацию, даже когда они запросили удаление данных пользователя.

Честно говоря, я не юрист.

Пользователь может отозвать своё согласие на обработку персональных данных, однако согласие является лишь одним из оснований, делающих обработку данных законной в соответствии с GDPR.

Другим основанием может быть законный интерес контроллера (статья 6.1, пункт f: обработка необходима для целей законных интересов, преследуемых контроллером). Таким законным интересом может быть обеспечение невозможности создания пользователем новой учётной записи. В противном случае пользователь мог бы злоупотреблять GDPR, требуя удаления всех записей, включая информацию о его неправомерном поведении.

Статья 17 GDPR, выделение моё.

  1. Субъект данных имеет право требовать от контроллера без неоправданной задержки удаления персональных данных, касающихся его или её, а контроллер обязан без неоправданной задержки удалить персональные данные, если применимо одно из следующих оснований: (…)
    субъект данных отзывает согласие, на основании которого осуществлялась обработка (…) и если не существует иного законного основания для обработки;

Это по сути означает: да, форум обязан удалить данные пользователя по его запросу, но поскольку форум приостановил учётную запись пользователя, ему необходимо обеспечить невозможность создания новой учётной записи этим пользователем. Следовательно, у форума есть веская причина хранить адрес электронной почты приостановленного пользователя, несмотря на запрос пользователя.

Один из способов реализации этого в Discourse — анонимизировать (уже приостановленного) пользователя, а затем изменить анонимизированный адрес электронной почты обратно на его реальный адрес. Также, основываясь на том же основании, вы можете захотеть сохранить IP-адрес регистрации пользователя и добавить его в список блокировок.