OAuth с Passport.js в мультитенантном приложении - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над веб-сайтом, который позволит нескольким арендаторам использовать субдомены.

Учетные записи смогут добавлять свои собственные субдомены, если они еще не существуют;Например:

http://tenant1domain1.mywebsite.com
http://tenant1domain2.mywebsite.com
http://tenant2domain1.mywebsite.com
http://tenant2domain2.mywebsite.com

Я также добавляю возможность входа в систему с помощью нескольких провайдеров oauth (Google, Microsoft, Azure Ad и т. д.), используя passport.js.

Все эти услугивсе обратные вызовы к основному домену (mywebsite.com/login/google/callback), и мне нужно определить поддомен запроса входа в систему, чтобы перенаправить пользователя.

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

В настоящий момент у меня возникла проблема, когда я не могу найти способ сохранить информацию об арендаторе после этапа проверки подлинности паспорта.

Я попытался использовать переменные сеанса, но сеанс сбрасывается на этапе обратного вызова и теряет всю информацию, которую я там хранил.

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

Есть ли способ заставить passport.js сохранить существующий сеанс переменнымВы не повреждены или используете другой способ для передачи информации об арендаторе?

1 Ответ

0 голосов
/ 19 февраля 2019

Не полный ответ, но есть шаблон проектирования, который сохраняет &redirect=/url-after-login в качестве параметра запроса URL при переходе на страницу входа.После успешного входа в систему обработчик входа перенаправляет обратно на этот URL.URL может быть выбран в зависимости от пользователя или исходной страницы.

Может ли это сработать в вашей ситуации?Очевидно, что для этого нужно изучить, как реализовать это в файле passport.js.Извините, я не могу предложить рабочий код.

...