Что я должен хранить как UserName от DotNetOpenAuth - PullRequest
0 голосов
/ 20 декабря 2011

Я использую DotNetOpenAuth для интеграции Google , Yahoo , Twitter и Facebook Вход в мое приложение.

Теперь все работает как положено.

  • Твиттер возвращает -> Имя пользователя и идентификатор заявки (Just Id)
  • Google возвращает -> Адрес электронной почты, Имя и Фамилия и ID(URL + ID)
  • Yahoo возвращает -> Email-адрес, псевдоним и идентификатор (Url + ID)

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

  • ID, имя пользователя, имя, OpenID, LoginType, DisplayName

мне интересно, что я должен хранить как имя пользователя, я думал оID, но у меня есть следующие вопросы:

  1. Должен ли я хранить весь идентификатор как имя пользователя?!
  2. Повлияет ли это на производительность, чтобы сохранить весь идентификатор (URL) как имя пользователя?
  3. Если бы я извлек идентификатор из идентификатора заявки, он все равно был бы уникальным для всех 3 провайдеров?

1 Ответ

1 голос
/ 21 декабря 2011

Для OpenID вы должны использовать ClaimedIdentifier в качестве идентификатора.Не что-нибудь еще, и, конечно, не только подстрока из заявленного идентификатора.Все остальное серьезно подрывает безопасность вашего приложения.

Что касается места его хранения, я бы порекомендовал вам сохранить выделенный столбец для хранения заявленного вами идентификатора, а не просто хранить его в столбце UserName.Рассмотрим следующий сценарий:

  1. Пользователь создает учетную запись на вашем веб-сайте с использованием OpenID http://SomeOpenIDUrl
  2. Злоумышленник входит в систему с помощью имени пользователя / пароля.Он оставляет пароль пустым, но вводит http://SomeOpenIDUrl в качестве имени пользователя
  3. Злоумышленник успешно входит в систему в качестве своей жертвы.

Ситуацию, подобную приведенной выше, можно, конечно, различными способами смягчить, но лучший способ IMO - сохранить OpenID вне столбца username, чтобы это было абсолютно невозможно.

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