Вопрос

Я читаю о Федеративный вход для пользователей аккаунтов Google чтобы выяснить, как я могу заставить пользователя войти в веб-приложение, используя свою учетную запись Google.

Таким образом, ближе к концу процесса Google возвращает предоставленный Google идентификатор, который добавляется как openid.claimed_id.Это означает, что веб-приложение использует этот идентификатор для распознавания пользователя и предоставления доступа к функциям и данным приложения.Мой вопрос в том, является ли этот идентификатор статическим?Могу ли я использовать этот идентификатор для многократной идентификации одного и того же пользователя?

Это было полезно?

Решение

Да.Считайте, что значение openid.claimed_id — это имя пользователя.Особенно в случае с Google, но это верно для любого провайдера OpenID, который действительно реализует «направленную идентификацию», не считайте, что это имя пользователя соотносится с другими веб-сайтами.Любая другая проверяющая сторона, помимо вашего собственного веб-сайта, по замыслу получит другое значение утвержденного_id для того же пользователя Google.

Кроме того, обязательно рассматривайте этот заявленный_id как с учетом регистра.

Другие советы

Конкретный ответ на ваш вопрос можно найти в Документация Google OpenID API:

Идентификатор, предоставленный Google, который не имеет никакого отношения к фактическому имени или паролю учетной записи Google пользователя, является постоянным значением;оно остается постоянным, даже если пользователь меняет свое имя пользователя Google и/или адрес электронной почты.Этот идентификатор также является «направленным идентификатором», то есть Google возвращает разное значение каждой проверяющей стороне.Google использует параметр запроса openid.realm для распознавания проверяющей стороны, поэтому, если стороннее приложение решит изменить это значение, все идентификаторы пользователей изменятся.

На самом деле, я только что столкнулся с экземпляром, в котором Google claimed_id изменился для моего тестового пользователя.Я подходил к концу внедрения OpenID в свое приложение, и без видимой причины claimed_id в данных ответа изменился.

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

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

Редактировать

Теперь у меня перед носом пирог!Я упустил одну маленькую деталь, которая оказалась важной деталью.Я сменил среду разработки и размещался на другом v-хостинге.Это эффективно изменит область, и это изменит ответ claimed_id в соответствии с документами.

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

область обновления

Подробная информация

Просто в качестве дополнительного замечания - даже если вы разрабатываете свое OpenID-решение для одного из ваших поддоменов, возможно, было бы разумно указать realm для вашего домена верхнего уровня.

например, OpenID.realm = http://*.yourdomain.com

Это позволит вам расширить страницу входа на всех ваших поддоменах и сохранить идентификацию пользователя на них.

(необязательно) Область аутентификации.Определяет домен, которому конечного пользователя просят доверять.(Пример:"http://*.myexamplesite.com") Это значение должно соответствовать домену, определенному в OpenID.return_to.Если этот параметр не определен, Google будет использовать URL, указанный в OpenID.return_to.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top