Resumo

O provedor controlava a data; o site guardava a conta

Ao receber o OpenID Connect em fevereiro de 2014, o Google deu ao velho protocolo um prazo: o suporte ao OpenID 2.0 terminaria em 20 de abril de 2015. A companhia passaria a concentrar seu login federado no novo padrão e apontou ferramentas de integração próprias. Havia mais de um ano para preparar a migração. Ainda assim, a data era decisão do operador da autenticação. Um site dependente do login do Google podia reorganizar sua aplicação; não podia exigir que a porta antiga permanecesse aberta.

No banco de dados desse site, a porta conduzia a algo duradouro. O identificador verificado do OpenID 2.0 podia ser a chave de uma conta com compras, arquivos, associação e permissões. O OpenID Connect apresenta a identidade de outro modo, por um par de emissor e sujeito. A pessoa podia ser a mesma, mas a chave entregue ao site mudava. Fazer o novo login funcionar era apenas metade da tarefa. Se o site não encontrasse a conta antiga, abriria outra, vazia; se unisse chaves erradas, poderia revelar um histórico a quem não tinha direito a ele.

O Google repetiu o aviso em 20 de março de 2015. OpenID 2.0 e outros protocolos legados deixariam de funcionar em 20 de abril. Aplicativos que continuassem a usá-los poderiam ficar sem conexão com o Google, possivelmente sem oferecer login, até adotar uma opção compatível. O comunicado descrevia o risco operacional da data, não apresentava uma contagem de usuários afetados. Era o provedor deixando claro que podia retirar o mecanismo de autenticação que operava.

A última versão ficou pronta a quatro dias do corte

Em 16 de abril de 2015, membros da OpenID Foundation aprovaram a especificação final de migração: 28 votos a favor, nenhum contra e quatro abstenções. Quatro dias separavam a aprovação do fim anunciado pelo Google. Esse intervalo não corresponde ao tempo total de desenvolvimento. O plano de desligamento era público desde 2014, e a própria especificação compara suas regras com um guia do Google de junho daquele ano. A aprovação fixou, perto do prazo, uma linguagem comum para provar a continuidade das contas.

A especificação começa pela diferença entre os identificadores. O OpenID 2.0 usava um Claimed Identifier verificado. No Connect, a identidade é um par formado pelo emissor e pelo sujeito. O site acrescenta o escopo openid2 ao pedido de autenticação para solicitar também a identidade anterior. Se o provedor conhece um identificador antigo associado àquela pessoa, ele o inclui no ID Token como openid2_id. O site valida o token e então enfrenta a pergunta que a simples assinatura do token não resolve: o emissor pode falar com autoridade sobre aquele identificador antigo?

O texto final oferece testes para isso. Em uma situação restrita, as autoridades dos antigos e novos pontos de entrada podem coincidir. Nos demais casos, o site consulta o URI do identificador antigo com Accept: application/json, recebe um iss e exige correspondência exata com o emissor do token. Há uma via separada para identificadores XRI. Se a autoridade não for comprovada, o identificador antigo não pode ser aceito para a associação. Depois da verificação, o site deve vincular a conta OpenID 2.0 existente ao par novo. A ação que importa altera o registro local onde ficam os direitos do usuário.

O apêndice B registra diferenças em relação ao guia do Google datado de junho de 2014. O guia usava openid.realm e openid_id; a norma escolheu openid2_realm e openid2_id. Segundo os autores do texto final, o guia também deixava de fora a verificação da parte solicitante e da autoridade sobre o identificador antigo que a norma descreve. É a comparação dos autores com aquele guia, não uma medição do funcionamento de cada instalação do Google. O contraste revela por que a passagem entre duas credenciais exigiu mais do que seguir a data do provedor.

Os registros citados não informam quantos sites concluíram a migração ou quantas contas foram vinculadas incorretamente. Para medir isso seriam necessários os registros de cada site. Já a distribuição de responsabilidade está escrita: o Google marcava o fim do protocolo; quem guardava a conta precisava demonstrar a quem entregaria a chave.