Использование OpenID с существующей системой входа на сайт

Недавно я внедрил конечные точки OpenID Google и Yahoo в свою систему аутентификации на моем сайте, чтобы пользователи могли избежать создания учетной записи на моем сайте. Довольно распространенная практика, верно?

У меня есть конкретный вопрос, но сначала немного справочной информации.

Когда я прошел трехстороннюю аутентификацию, я использовал Attribute Exchange, чтобы получить имя пользователя и адрес электронной почты. В настоящее время я храню их OpenID (длинная строка, которая выглядит следующим образом: https://me.yahoo.com/a/2Z7LplQsnI_DgtAw(... куча буквенно-цифровых символов) в специальном поле в таблице пользователей.

Допустим, моя таблица пользователей выглядит следующим образом.

type  id  password                          email             key
1     1   0e9212587d373ca58e9bada0c15e6fe4  test@example.com
2     1   b8d2f4a50d2b364ff2766556ba50da48  me@gmail.com      https://www.google.com/accounts/o8/id?id=AItOawll6-m_y…
2     2   6687d5d88b359ee1340717ebf0d1afc6  you@gmail.com     https://www.google.com/accounts/o8/id?id=AItOawm3-C_9…
3     1   fd193c2fa449c9d6dc201d62d5ca86d3  him@yahoo.com     https://me.yahoo.com/a/2Z7LplQsnI_DgtAw…
1     2   2e710b13b3dd787e2b15eab3dde508c2  person@site.com

types
1 = native account
2 = Google OpenID
3 = Yahoo OpenID

Когда пользователь входит в систему с собственной учетной записью, адрес электронной почты и пароль используются для проверки подлинности (дух).

Когда пользователь использует Google или Yahoo OpenID, для аутентификации используется OpenID (поле ключа).

Хорошо, теперь, когда вся справочная информация не нужна, будет ли она безопасна, если я забуду о сохранении самого OpenID и просто использую электронную почту, полученную от Attribute Exchange, для аутентификации пользователя? Может ли кто-нибудь подделать третью часть транзакции OpenID, или я могу верить, что всякий раз, когда я получаю you@gmail.com из части Attribute Exchange в транзакции OpenID с Google, она является подлинной и не подделана?

1 ответ

Решение

Такое намеренное нарушение протокола вызовет у вас серьезные головные боли в долгосрочной перспективе. Например, рассмотрим случаи, когда пользователь входит в систему, используя пользовательский сервер OpenID, но предоставляет адрес электронной почты @gmail.com.

Единственная информация, которая гарантированно будет абсолютно последовательной и надежной после обмена аутентификацией OpenID, - это идентификационный URL.

Другие вопросы по тегам