Использование 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.