Как делегирование OpenID работает на Проверяющей стороне?Изменились ли спецификации в последнее время?

StackOverflow https://stackoverflow.com/questions/826014

  •  05-07-2019
  •  | 
  •  

Вопрос

Рассмотрим этот сценарий.У меня есть свой собственный веб-сайт, который я использую в качестве своего идентификатора, но я использую стороннего поставщика OpenID (в моем случае yahoo), как описано здесь, для входа на веб-сайты проверяющей стороны (RP), такие как stackoverflow и sourceforge.

Это казалось мудрым ходом:

  • Я не привязан к провайдеру OpenID, поскольку, если / когда yahoo больше не будет предлагать эту услугу, или начнет взимать за нее плату, или я больше не буду им доверять, я могу безболезненно сменить провайдера
  • У меня нет экономических, административных затрат и проблем безопасности, связанных с установкой и обслуживанием OpenID-провайдера на моем сервере

Вопрос

Как должен работать RP?Насколько я понимаю, он должен использовать идентификатор Я предоставляйте и используйте провайдера (yahoo) только для аутентификации (а не для идентификации).Это правильно?Изменилось ли что-нибудь в последнее время?Просто для ясности, я имею в виду, что моя идентификация должна быть

http://www.mysite.com/myPreferredUrl

и не

https://me.yahoo.com/myYahooId (именно здесь мой веб-сайт "перенаправляет" аутентификацию, как описано на вышеупомянутом веб-сайте)

Боковое примечание

Я задаю этот вопрос еще и потому, что сейчас все, кажется, сломано (несколько месяцев назад все было в порядке).Если я попытаюсь войти в stackoverflow, я напишу mysite.com URL, я правильно "перенаправлен" на веб-сайт yahoo, на котором я вхожу в систему, он спрашивает меня, хочу ли я "продолжить работу с stackoverflow", я отвечаю "да", он "перенаправляет", и на сайте stackoverflow я вижу "Это OpenID, который мы раньше не видели", он показывает мой идентификатор yahoo, и я фактически заблокирован!

Это ошибка, или я что-то упускаю?

PS:если вам интересно, как я пишу этот вопрос, то это потому, что на одном из многих компьютеров, которые я использую, браузер все еще имеет действительный файл cookie....

Редактировать:Приведенный ниже ответ Эндрю Арнотта предложил способ решить мою проблему (т.е.переключение на другого провайдера).Но меня все еще интересуют некоторые детали:что изменилось с OpenID 1.1 на 2.0 в отношении делегирования?Почему в спецификациях было выбрано, чтобы провайдер "нарушал" делегирование?Чем больше вы объясните, тем больше шансов, что ваш ответ будет принят.

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

Решение

Я считаю, что ответ Эндрю довольно точен.Единственное, что я могу добавить, это немного о том, как спецификация версии v2.0 оказалась такой, какой она была, позволив провайдеру отказаться от работы с делегированием.Я думаю, что одним из мотиваторов был серверно-ориентированный выбор идентификатора, при котором пользователь просто вводит "yahoo.com" (или нажимает кнопку Yahoo), а затем выбранный им идентификатор возвращается с сервера в ответе id_res.Это также позволяет серверу делать такие вещи, как предлагать выбор того, какой идентификатор отправлять (как это делает Yahoo), или отправлять уникальный идентификатор каждому RP (как это делает Google).

Это также означает, что вся необходимая информация находится в id_res ответ, что означает, что RP не нужно сохранять состояние из своего checkid запрос для того, чтобы обработать ответ.Фактически, провайдер мог бы отправить id_res ответ непосредственно на RP без того, чтобы RP инициировал его с помощью checkid просьба вообще.

Поставщик версии v1.x был совершенно не в курсе, когда происходило делегирование вечером.Такой дизайн не позволял поставщику даже отказаться от поддержки делегирования, но также создавал некоторые проблемы с пользовательским интерфейсом;было бы предложено, хотите ли вы предоставить "joe.coolprovider.com" идентификатор, когда вы фактически использовали свой делегированный "joesmith.org" идентификатор.

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

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

Я не думаю, что Yahoo поддерживает делегирование OpenID.То есть StackOverflow и другие RPS могут выполнить обнаружение вашего собственного идентификатора и правильно настроить запрос авторизации делегирования, но Yahoo может предпочесть (возможно, вопреки спецификации) отправить подтверждение идентификации для своего собственного идентификатора, а не для того, который указан RP.

Спецификации не изменились с OpenID 1.1 на 2.0.Спецификации не предполагают и не одобряют поведение Yahoo!, и только Yahoo может авторитетно прокомментировать их рассуждения.

Делегирование StackOverflow все еще работает.Похоже, Yahoo сломала тебя.Я предлагаю вам использовать то, что вам купило делегирование, изменив, кому вы делегируете аутентификацию.www.myopenid.com например, поддерживает делегирование.Если вы измените свой собственный идентификатор, чтобы указать на это, вы сможете снова вернуться в StackOverflow под своим старым именем.:)

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