Добавление SSO после регистрации множества пользователей — как их мигрировать?

Да! Мне удалось создать скрипт, который проходит по всем пользователям Discourse и импортирует их в нашу платформу вместе с хешем их парольной фразы.

Вскоре мы сможем позволить любому, у кого есть форум на Discourse, добавлять также события, видеоконференции, медиа и многое другое, при этом Discourse будет жить на вкладке «Обсуждение». Результат можно посмотреть на https://intercoin.app

По сути, мы превращаем любую установку Discourse в современную социальную сеть по образцу Facebook. Мы работали над этими функциями в течение многих лет, и теперь хотим тесно интегрировать их с Discourse и WordPress. Таким образом, пользователи смогут объединять WordPress, Discourse и Qbix и самостоятельно размещать всю свою сообщественную платформу.

Однако у меня осталось две проблемы.

  1. В Qbix мы хешируем пароль на стороне клиента как минимум с помощью sha1(password + userId) перед отправкой на сервер. Даже если используется HTTPS. Мы делаем это для того, чтобы сервер или любой MITM-атакующий НИКОГДА не имел доступа к паролю для его повторного использования на других сайтах. Но Discourse просто отправляет пароль на сервер. Поэтому нам пришлось отключить это хеширование на стороне клиента. Возможно ли выполнить несколько итераций hash_pbkdf2 на стороне клиента, а остальные — на стороне сервера? Я пробовал, но результаты не совпадают:
php > $password = 'abc';
php > $salt = 'def';
php > $a = hash_pbkdf2('sha256', $password, $salt, 64000, 64, false);
php > $b = hash_pbkdf2('sha256', $password, $salt, 1, 64, false);
php > $c = hash_pbkdf2('sha256', $password, $b, 63999, 64, false);
php > echo $a;
9d7a21ae4113bea06d81e0c486f45ab778bb739f19f7a6a305d8401918a9d8a1
php > echo $c;
f42af6861ebcf8560b027276e0d02ad46502636045486057d81be7c4c4aa630e
  1. Возможно ли использовать Discourse исключительно как провайдера SSO, вместо того чтобы наш сайт выступал в роли провайдера SSO? Тогда администраторы форумов Discourse будут ещё более склонны расширять их функциями Qbix, так как вход останется точно таким же и будет обрабатываться на стороне Discourse: Facebook, Google и любые другие провайдеры. Есть ли какая-либо документация о том, какую именно информацию Discourse Connect как провайдер SSO возвращает нашему потребительскому сайту? Включает ли она такие данные, как фото, которое мы можем скачать, имя, фамилия и, как минимум, имя пользователя?