Google Federated Login (OpenID+OAuth) para aplicativos hospedados - Alterando os pontos finais?
-
20-09-2019 - |
Pergunta
Estou tentando integrar a conta do Google Federated com uma conta de aplicativos Premier, mas estou tendo alguns problemas.
Quando eu envio o pedido para: https://www.google.com/accounts/o8/ud
Com todos os parâmetros (veja abaixo), eu retiro ambos um request_token
e lista de atributos solicitados por Attribute Exchange
. Isso é perfeito, pois precisamos do email via atributo Exhange (AX) para armazenar o usuário em nosso banco de dados de aplicativos, e precisamos do token da solicitação para o futuro API requests to scopes
(ou seja: calendário, contatos, etc).
No entanto, usando esse URL (aqui referido como o endpoint
) não mantém o usuário assinado em seus aplicativos hospedados (gmail, calendário, et al), o que é um problema.
Alterando o endpoint para https://www.google.com/a/thedomain.com/o8/ud?be=o8
muda tudo. Estou conectado automaticamente a outros aplicativos do Google (Gmail etc). No entanto, usando esse endpoint, eu só recebo o token de solicitação ou os atributos via AX. Obviamente, isso não é particularmente híbrido. É muito um ou outro.
Exemplo de solicitação para o terminal https://www.google.com/accounts/o8/ud
parameters = {
'openid.ns': 'http://specs.openid.net/auth/2.0',
'openid.claimed_id': 'http://specs.openid.net/auth/2.0/identifier_select',
'openid.identity': 'http://specs.openid.net/auth/2.0/identifier_select',
'openid.return_to':'http://our.domain.com/accounts/callback/',
'openid.realm': 'http://our.domain.com/',
'openid.assoc_handle': assoc_handle,
'openid.mode': 'checkid_setup',
'openid.ns.ext2': 'http://specs.openid.net/extensions/oauth/1.0',
'openid.ext2.consumer': 'our.domain.com',
'openid.ext2.scope': 'https://mail.google.com/mail/feed/atom',
'openid.ns.ax':'http://openid.net/srv/ax/1.0',
'openid.ax.mode':'fetch_request',
'openid.ax.required':'firstname,lastname,email',
'openid.ax.type.firstname':'http://axschema.org/namePerson/first',
'openid.ax.type.lastname':'http://axschema.org/namePerson/last',
'openid.ax.type.email':'http://axschema.org/contact/email',
}
return HttpResponseRedirect(end_point + '?' + urllib.urlencode(parameters))
(Assoc_handle foi definido anteriormente com a solicitação inicial do OpenID)
Estou lutando há dias tentando fazer essa abordagem hybird funcionando, lutando contra as mensagens de erro mais opacas (This page is invalid
... obrigado google) e falta de documentação consistente. Eu já arrastei cada amostra de código que puder para chegar a esse ponto. Qualquer ajuda seria apreciada ...
Solução
Para o registro, a posteridade e qualquer outra pessoa que possa vir, depois disso, documentarei a resposta (ridícula).
Por fim, o problema estava ligando:
return HttpResponseRedirect(
'https://www.google.com/a/thedomain.com/o8/ud?be=o8'
+ '?'
+ urllib.urlencode(parameters)
)
Você pode identificá -lo? Sim, foi a inclusão explícita do ponto de interrogação que causou o problema. Duas cordas de consulta nunca existiram ao mesmo tempo.