Этот вопрос очень широкий, поэтому я попытаюсь ответить на него.
Если вы создаете сеть сайтов, каждый сайт в идеале будет иметь свою собственную базу данных. Это обеспечит «песочницу» и возможность при необходимости легко перенести сайт в собственную инфраструктуру из-за проблем с масштабированием или безопасностью.
При работе с аутентификацией пользователей создается впечатление, что вам нужно одно безопасное хранилище пользователей, которое действует как сервер oauth2, а каждый из сайтов действует как клиент Oauth. Вы захотите использовать тип предоставления кода авторизации в OAuth.
По сути, пользователь посещает сайт A. Сайт A видит, что он не вошел в систему через сеанс сайта. Он перенаправляет на ваш сервер OAuth, который показывает логин (представьте логин Google). Поскольку сайт A также передавал URL-адрес обратного вызова, после того как вы вошли в систему, сервер OAuth знает, куда перенаправить пользователя, вместе с действительной информацией о токене. Затем сайт A берет этот токен и обменивает его на токен доступа на стороне сервера, так что теперь у вас есть данные аутентификации на сайте A.
Если вы собираетесь реализовать свое собственное подтверждение связи OAuth, вам следует использовать существующую библиотеку сервер / клиент. Для PHP вы можете посмотреть библиотеку сервера League OAuth или использовать Laravel Passport, если вы используете Laravel. Существуют и другие подобные пакеты для других фреймворков.