Использование OpenID с существующей системой входа на сайт - PullRequest
2 голосов
/ 13 июля 2010

Я недавно внедрил конечные точки 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

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

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

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

1 Ответ

3 голосов
/ 13 июля 2010

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

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

...