Делегирование 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 для аутентификации? Как?

3 ответов


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

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

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

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

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

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


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

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

кроме того, если StackOverflow поддерживает OpenId Connect Migration 1.0 и предполагает, что Google возвращает ваш пользовательский домен claimed_id в ответе на миграцию, то:

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

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


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

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