Я создаю веб-приложение, которое требует регистрации / аутентификации, и я рассматриваю вопрос об использовании адреса электронной почты в качестве единственного идентификатора пользователя. Вот что я вижу как плюсы и минусы (дополнено ответами):
ПРОФИ
Еще одно поле, которое необходимо заполнить при регистрации (это будет просто адрес электронной почты, пароль и подтверждение пароля). Я большой поклонник минималистичной регистрации.
Адрес электронной почты легче запомнить. (спасибо Митч , Джереми )
Вам не нужно беспокоиться о том, что ваше любимое имя пользователя уже занято - вы единственный, кто использует ваш адрес электронной почты. (спасибо TStamper )
CONS
Пользователь должен вводить больше при каждом входе в систему.
Что делать, если пользователю нужны несколько учетных записей? Им понадобится другой адрес электронной почты. (Хочу ли я, чтобы пользователь мог создавать несколько учетных записей?)
Легко угадать потенциальному злоумышленнику (если он знает адрес электронной почты цели, он знает идентификатор входа в систему). (спасибо Василь )
Пользователи могут испытывать желание использовать тот же пароль, который они используют для своей учетной записи электронной почты, что является плохой безопасностью. (спасибо Томас )
Если вы часто меняете адреса электронной почты, может быть трудно вспомнить, какой адрес вы использовали для регистрации на сайте после долгого перерыва. (спасибо Программное обеспечение Monkey )
Хакер может спамить регистрационную форму и использовать ответы "электронная почта уже занята", чтобы создать список действительных электронных писем. (спасибо Дэвид )
Не у всех есть адрес электронной почты. (спасибо Николай )
Если бы я использовал электронную почту в качестве идентификатора, я бы предоставил механизм, позволяющий изменять его в случае изменения пользователем адреса. В этом случае пользователи не будут публиковать контент на общедоступном сайте, поэтому отдельное имя пользователя не потребуется для защиты адресов электронной почты (но это необходимо учитывать для других сайтов).
Другим вариантом является реализация OpenID (что является еще одной дискуссией).
Кажется, это работает для Google, но их сервисы тесно интегрированы. Что я упустил в своем анализе? У вас есть какие-нибудь рекомендации? У кого-нибудь есть опыт, которым можно поделиться?
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ
Спасибо всем за ваши ответы. Я решил использовать электронную почту как идентификатор, но затем разрешить создание имени пользователя для входа в систему после регистрации. Это обеспечивает небольшую гибкость при сохранении максимально короткой регистрации. Это также предотвращает проблемы, когда пользователь меняет адреса электронной почты (они могут просто войти в систему со своим именем пользователя и обновить его). Я также буду внедрять методы, предотвращающие грубое принуждение адресов электронной почты вне систем регистрации и входа в систему (в основном период охлаждения после повторных попыток).