Адреса электронной почты как первичные ключи аккаунта - PullRequest
0 голосов
/ 28 апреля 2020

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

Я ударил стену с помощью CTO.

По сути, у меня есть серверная часть, которая использует модель единого входа, и мне говорят, что «адреса электронной почты - это, в основном, ссылка на первичный ключ для пользователя», поскольку несколько учетных записей не могут использовать один и тот же адрес электронной почты. *

Пример, который я провел все утро, указывал на структуру Microsoft Auth, которая «запрашивает» у пользователя адрес электронной почты, затем перечисляет все учетные записи с этим адресом, из которых вы можете выбрать, затем аутентифицируетесь с паролем, другие провайдеры, которые следуют стандарты OAuth также придерживаются аналогичной структуры пользовательского интерфейса.

Из этого следует, что CTO делает вывод, что адрес электронной почты в основном идентичен userId (первичный ключ, используемый для идентификации пользователя во всей среде единого входа) и, следовательно, наличие отдельного ПК является «бессмысленным чрезмерным осложнением, Microsoft просто делает по какой-то причине BS ".

Типичные примеры моих проблем ...

  1. Проблема повторного использования: есть люди и даже небольшие компании, которые делятся электронной почтой адрес. Как и номера телефонов, электронные письма могут быть использованы повторно. Jsmith@somecompany.com может легко принадлежать Джону Смиту один год и Джулии Смит два года спустя.

  2. Проблема обновления: Другая проблема с электронными письмами заключается в том, что они часто меняются. Если вы присоединяетесь к другим таблицам с этим ключом, то вам придется обновить и другие таблицы, что может сильно ухудшить производительность, когда целая компания-клиент изменит свои электронные письма (что, как я видел, произошло).

  3. Проблема с несколькими учетными записями: у меня есть учетная запись в Microsoft, которую я создал, когда присоединился к компании, чтобы связать сабвуфер MSDN. Позже компания получила подписку Azure и создала мне аккаунт, связанный с тем же адресом электронной почты. Босс утверждает, что они должны рассматриваться как одна и та же учетная запись, и поэтому моя организация должна управлять ими, поскольку она владеет доменом @ mycompany.com.

  4. Проблема с несколькими решениями: у меня есть адрес электронной почты Я зарегистрировался, чтобы использовать приложение в нашей CMS с этим адресом. Позже я регистрируюсь, чтобы использовать другое приложение в нашей CMS (такой же SSO, другой клиент нашей компании). Это та же учетная запись, которую администраторы этих приложений могут «управлять моей учетной записью»?

  5. Проблема нескольких провайдеров: у меня есть адрес электронной почты, связанный с моими учетными записями Facebook, Google и Microsoft Я хочу связать их с моей корпоративной учетной записью, чтобы я мог войти с этими учетными данными, все они имеют адрес электронной почты, но они также являются несколькими удаленными учетными записями ... что, если я хочу связать их с различными локальными учетными записями и использовать удаленный адрес электронной почты для всей переписки в нашей системе?

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

Я здесь не прав?

1 Ответ

0 голосов
/ 28 апреля 2020

как ваша формулировка "поскольку несколько учетных записей не могут совместно использовать адрес электронной почты". Кажется, подразумевается, что электронная почта должна быть Уникальная , а не Первичный ключ .

Уникальные ограничения не совпадают с первичными ключами, и, как вы уже поняли, электронная почта является очень плохой первичный ключ.

Первичный ключ должен быть суррогатные ключи . Я склонен думать, что Естественные ключи никогда не являются хорошим кандидатом на Первичные ключи в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...