Если бы мне нужно было запустить службу, которая позволяла бы пользователям проходить аутентификацию с помощью "локальных" комбинаций имени пользователя и пароля и ТАКЖЕ любого количества служб OAuth - как могла бы выглядеть эта модель данных пользователя?
Обычно, если бы я обрабатывал все логины самостоятельно, в базе данных «user» (предполагая MySQL) поля имени пользователя и пароля были бы обязательными как ненулевые. Но, если бы мои пользователи просто хотели войти в систему с Facebook, я бы просто сохранил авто-токен Facebook, и у меня не было бы никакого имени пользователя / пароля локально.
Кроме того, что, если они захотят войти в систему с помощью Твиттер-кредитов, затем Tumblr, а затем любой другой службы? Я мог бы оставить поле для каждого типа, но это может быть немного громоздким. Не лучше ли мне сохранить другую таблицу «методов аутентификации» из-за отсутствия лучшего термина, чтобы у меня были отношения «один ко многим» между пользователями и способы их аутентификации?
По сути, я спрашиваю, знает ли кто-нибудь о передовой практике отраслевого стандарта для этого сценария, или может указать мне верное направление (или кто-то реализовал что-то подобное, что работает для них хорошо). Один пользователь, несколько методов аутентификации - как лучше всего хранить эту информацию?
Если какое-либо из моих предположений является недействительным, прошу прощения, поправьте меня.