Как реализовать единую регистрацию и авторизацию на разных сайтах?
Добрый день. Столкнулся с проблемой при разработке сайтов на Laravel. У меня несколько сайтов для разных проектов. Хочу всё это соединить в один домен. Предпологаю, что Laravel Passport на это дело сгодится.
План таков:
1. Домен site.ru будет основным. Там будет проходить регистрация пользователей.
2. Домен game.site.ru. Там будет другой проект, но связанный с сайтом site.ru пользователями. На этом сайте можно только авторизоваться. Регистрация будет перенаправлять на сайт site.ru, где пользователь и регистрируется, либо авторизовывается.
3. Домен game2.site.ru. Такой же сайт, как и game.site.ru, и с той же авторизацией.
PS: Все домены (сайты) имеют свою БД, отдельную от остальных. Так что единую БД нельзя использовать.
Как вы считаете, можно ли так сделать? Все сайты будут написаны без JS фреймворков (возможно позже переписаны будут). Какими подводными камнями можно "ударить мизинец"? Заранее спасибо.
Сергей delphinpro, а разве Passport уже не реализует oAuth сервер? Есть какие либо статьи по связи Laravel и oAuth? Если есть, то поделитесь пожалуйста. Можно и на англ.
Дмитрий Кузнецов, вы не поняли. Passport как раз и предоставляет вам как сервер OAuth аутентификации так и браузерные компоненты. Насчет статей не знаю. Официальная дока в принципе нормально написана.
Я делал такую единую авторизацию, именно с использованием Passport. Так что - вперед.
З.Ы.: и да, авторизация на подключенных сайтах тоже должна проходить через site.ru в вашем примере.
У меня планируется сделать несколько доменов, брав основу от главного. Т.е.:
site.ru - главный домен. Регистрация и авторизация.
game.site.ru - игровой проект. Только вход.
game2.site.ru - игровой проект. Только вход.
*.site.ru ...
Т.е. все проекты имею свою базу данных, но должны позволять авторизовываться через главный домен.
Дмитрий Кузнецов, у хабра то, что называется SSO. Для его имплементации нужно как минимум четко понимать, что такое корсы и зачем они нужны а так же само по себе понимание концепта SSO. Ничего супер сложного, но вам это не нужно - у вас один домен.
site.ru, game.site.ru, game2.site.ru - это все один и тот же домен. game, game2 - поддомены.
Реализовывайте через куки саму по себе авторизацию. Есстественно, надо что бы APP_KEY у всех трех проектов совпадал, да и был правильно указан конфиг session.domain - на значение ".site.ru". Далее дело вашей бизнес логики - проектируйте БД, билдите бизнес логику как хотите - это уже к аутентификации не относится.