Делегирование OpenID Connect с Google теперь, когда они прекращают поддержку своего провайдера OpenID2?

В течение многих лет я использовал делегирование OpenID для входа в Stack Overflow (среди других сайтов), используя свой собственный URI в качестве OpenID, но имея Google для аутентификации. Я использую технику, описанную в этом вопросе о переполнении стека; Итак, мой пользовательский OpenID http://tupelo-schneck.org/robert преобразуется в HTML-страницу, содержащую это:

<link href="https://www.google.com/accounts/o8/ud" rel="openid2.provider" />
<link href="https://www.google.com/profiles/schneck" rel="openid2.local_id" />  

Однако теперь я вошел в Stack Overflow, и Google сказал мне: «Важное примечание: OpenID2 для учетных записей Google прекращает работу 20 апреля 2015 года. Подробнее…" На этой странице объясняется, что Google не поддерживает OpenID 2.0, и разработчикам следует перенести свои приложения на OpenID Connect. .

Могу ли я продолжать использовать настраиваемый URI для входа в систему OpenID, но передать полномочия провайдеру OpenID Connect от Google для проверки подлинности? Как?


person Robert Tupelo-Schneck    schedule 14.01.2015    source источник


Ответы (3)


OpenID Connect только поддерживает обнаружение, которое предназначено для поиска вашего провайдера на основе некоторой подсказки, которую вы ему даете (электронная почта, учетная запись, URL-адрес, домен и т. Д.); он не даст вам постоянного идентификатора, для которого вы можете делегировать аутентификацию настраиваемому провайдеру по вашему выбору.

Итак, если вы хотите использовать только настраиваемый URI для поиска своего провайдера, вы можете использовать подход, который дал Нат (за исключением последнего бита, который Google не делает и не может делать, и при условии, что SO поддерживает Discovery).

Но если вам нужно настоящее делегирование, чтобы RP могли использовать идентификатор, возвращаемый OP, который является постоянным для разных OP, которым вы делегируете, тогда вы не можете.

Для StackOverflow вам, вероятно, не понадобится ни один из них: SO использует свой собственный основной идентификатор / учетную запись, и вы можете связать с ней несколько учетных записей, включая Google. Только если бы SO использовала ваш пользовательский URI в качестве основного идентификатора, у вас возникла бы проблема. В этом случае проблем нет, и вы можете:

  1. используйте кнопку входа в Google или
  2. введите свой настраиваемый URI в поле ввода URL-адреса OpenID, предполагая, что вы и вы реализовали Discovery

Но и 1., и 2. действительно дают один и тот же результат: они обнаруживают, что Google - это то место, где вы хотите пройти аутентификацию.

person Hans Z.    schedule 20.01.2015
comment
Возможно, это заслуживает отдельного вопроса. Я предполагаю, что Роберт настраивает делегирование по той же причине, что и я: потому что я хотел иметь возможность менять поставщиков аутентификации без необходимости переходить на все отдельные сайты, которые используют настраиваемый URI в качестве идентификатора пользователя. Stack Overflow / Exchange - один из немногих сайтов, на которых есть представление о том, что пользователь SO / SE может иметь несколько идентификаторов, а другие просто нет. Я не хочу создавать что-то новое, если все, что нужно сделать, это снова привязать меня к Google. Если я поменяю провайдера аутентификации, я просто откладываю неизбежное, если другие откажутся от OpenID 2.0? - person MrCranky; 13.02.2015

Предполагая, что вы хотите использовать свой собственный домен в качестве идентификатора входа, предоставленного пользователем -

  1. Перейдите к https://stackoverflow.com/users/login-add?returnUrl=%2Fusers%2Fcurrent и добавить логин с помощью Google. Это добавит идентификатор Google OpenID Connect в вашу учетную запись.
  2. Разместите документ обнаружения OpenID Connect в своем домене (см. http://openid.net/specs/openid-connect-discovery-1_0.html#URLSyntax для подробностей.)
  3. Подождите, пока StackOverflow не начнет поддерживать обнаружение OpenID Connect
  4. Используйте http://tupelo-schneck.org/robert в качестве идентификатора пользователя.

Кроме того, если StackOverflow поддерживает OpenID Connect Migration 1.0 и при условии, что Google возвращает ваш персональный домен required_id в ответе на миграцию, тогда:

  1. Разместите документ JSON, как описано в http://openid.net/specs/openid-connect-migration-1_0.html#VerifyOPAuthority в вашем домене.

сгладит ваш путь.

person Nat Sakimura    schedule 19.01.2015
comment
Я не думаю, что Google может поддерживать возврат личного домена claimed_id, потому что они не сохранили его и не передали. Это будет означать, что настоящее делегирование не поддерживается, но оно ограничено (при условии, что SO начинает поддерживать обнаружение) только обнаружением через собственный домен / имя. Первичный идентификатор станет идентификатором, специфичным для Google, что, скорее всего, нарушит цель плаката. - person Hans Z.; 19.01.2015
comment
да ... в противном случае вы всегда можете настроить свой собственный IdP, используя мой проект с открытым исходным кодом, например bitbucket.org/PEOFIAMP/ phpoidc :-) - person Nat Sakimura; 19.01.2015
comment
Спасибо! Я прочитал спецификацию обнаружения, что мне нужно будет использовать HTTPS. Я не против. Единственное препятствие - будет ли и когда Stack Overflow поддерживать обнаружение OpenID Connect. Кто-нибудь знает? И, наконец, не похоже, что мне нужна миграция, поскольку тот же идентификатор (или версия HTTPS в любом случае) будет продолжать работать. Любые комментарии? - person Robert Tupelo-Schneck; 20.01.2015
comment
На самом деле, может быть, @HansZ. говорит, что это не сработает. Другими словами, обнаружение OpenID Connect не имеет аналогии между заявленным идентификатором и локальным идентификатором OP в делегировании OpenID2. Я мог бы tupelo-schneck.org/robert заявить, что Google является эмитентом этого идентификатора, но поскольку Google не знает и не заботится об этом идентификаторе, он на самом деле не принесет никакой пользы. Это правильно? - person Robert Tupelo-Schneck; 20.01.2015
comment
Или это @HansZ. говоря, что я смогу успешно войти в систему с помощью tupelo-schneck.org/robert, но переполнение стека будет думать, что я на самом деле something.google.something? Этого может быть достаточно ... - person Robert Tupelo-Schneck; 20.01.2015
comment
действительно, последнее: если SO реализует Discovery и вы реализуете части Discover (webfinger) в своем домене, тогда вы сможете использовать свой URL-адрес для входа в систему, но SO по-прежнему будет видеть идентификатор Google; в качестве альтернативы, просто нажав большую кнопку входа в систему с учетной записью Google, вы избавитесь от хлопот как для SO, так и для вас ... - person Hans Z.; 20.01.2015

Переключение вашего провайдера OpenID с Google на Yahoo! на вашем сайте может работать на вас, пока Yahoo! останавливает свою функцию OpenID 2.0.

Однако, если вы согласны с первым предложением Ната, это будет более стабильный способ на более длительное время.

person nov matake    schedule 20.01.2015