Уведомление необходимо для нескольких методов входа в веб-приложение

Я ищу стратегический совет по реализации приложения, поддерживающего несколько методов входа.

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

Однако пользователи также могут зарегистрироваться и войти в систему, используя свою учетную запись Twitter. Система позволит пользователю аутентифицироваться в Твиттере и разрешить моему приложению доступ к своей учетной записи, затем Твиттер перенаправит мое приложение, и мне будет присвоено имя пользователя Твиттера. В настоящее время, если это имя пользователя мне неизвестно, я создаю его в своей базе данных. Если мне известно, но это другой тип учетной записи (собственная учетная запись), я выдаю ошибку.

По сути, в настоящее время пользователи должны выбрать метод входа при создании учетной записи и придерживаться его. Я вижу два пути улучшения ситуации:

Разрешить несколько способов входа

У пользователей будет одна учетная запись, но несколько способов входа. Допустим, у пользователя есть собственная учетная запись с именем «joedirt», связанная с адресом электронной почты «[email protected]». Затем этот пользователь не входит в систему, используя нативный метод, а выбирает способ Twitter. В Твиттере его также называют «joedirt».

Проблема здесь в том, что из Твиттера я получаю только его имя пользователя. Было бы серьезной утечкой в ​​системе безопасности, если бы я мог войти в собственную учетную запись только с помощью совпадения имен.

Что мне здесь делать? Спросить у пользователя, который входит в систему с помощью дополнительного метода, его адрес электронной почты? Это был бы единственный способ убедиться, что это касается одного и того же пользователя, верно?

Разрешить только один метод входа, но возможность выбрать его в любое время

Альтернативный подход может заключаться в том, чтобы позволить пользователю использовать только один метод входа за раз, но при этом иметь возможность установить его в качестве предпочтения и изменить его даже после создания учетной записи. Могут развиваться два сценария:

  • От собственного метода входа к стороннему методу входа. Поскольку я не могу получить адрес электронной почты от стороннего входа, как мне связать собственную учетную запись со сторонней учетной записью? Опять же, сопоставление имени пользователя слишком слабое, верно?
  • От стороннего метода входа к собственному методу. Маловероятное событие, должен ли я вообще поддерживать это?

Извините за долгий рассказ. У меня есть небольшой ментальный блок в отношении того, какой подход лучше всего и каковы последствия для каждого сценария.


person Fer    schedule 01.11.2010    source источник


Ответы (1)


Как насчет того, чтобы позволить пользователю «привязать» свою учетную запись к другим методам входа, когда он уже вошел в систему? Таким образом, не будет проблемой, если сторонний поставщик предоставит только ограниченную информацию (например, имя пользователя Twitter).

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

person Anders Fjeldstad    schedule 01.11.2010
comment
Спасибо, я так увлекся, что мне нужен был такой четкий и простой ответ. Я думаю, что имеет смысл разрешить привязку дополнительных учетных записей при входе в систему. Это безопасно, позволяет изменять имена у разных провайдеров и не так сложно реализовать. - person Fer; 02.11.2010