Google Federated Accesso (OpenID + Oauth) per applicazioni in hosting - cambiando i punti finali?
-
20-09-2019 - |
Domanda
Sto cercando di integrare il Google Federated il login in un premier rappresentano le applicazioni, ma sto avendo qualche problema.
Quando invio la richiesta a: https://www.google.com/accounts/o8/ud
con tutti i parametri (vedi sotto), torno sia un request_token
e la lista degli attributi richiesti dalla Attribute Exchange
. Questo è perfetto, come abbiamo bisogno l'e-mail tramite l'attributo exhange (AX) per memorizzare l'utente nel nostro database dell'applicazione, e abbiamo bisogno il token di richiesta per il futuro API requests to scopes
. (Es: calendario, contatti, ecc)
Tuttavia, utilizzando l'URL (di seguito denominato il endpoint
) non mantenere l'utente l'accesso a loro applicazioni in hosting (Gmail, Calendar, et al ), che è un problema.
La modifica della endpoint per https://www.google.com/a/thedomain.com/o8/ud?be=o8
cambia tutto. Sto automagicamente firmato per altre applicazioni Google (Gmail, ecc). Tuttavia, utilizzando tale punto finale, ho solo la richiesta di token o gli attributi tramite AX. Ovviamente quello non è particolarmente ibrida. Il suo moltissimo l'uno o l'altro.
richiesta Esempio al https://www.google.com/accounts/o8/ud
punto finale
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 è precedentemente impostato con successo dalla richiesta iniziale OpenID)
Ho lottato per giorni cercando di ottenere questo approccio Hybird di lavoro, combattere i messaggi più opache di errore (This page is invalid
... grazie di Google) e la mancanza di documentazione coerente. Ho spulciato ogni esempio di codice che posso per arrivare a questo punto. Qualsiasi aiuto sarebbe apprezzato ...
Soluzione
Per la cronaca, i posteri, e chiunque altro possa venire a pezzi di questo, io documentare la risposta (ridicola).
In definitiva, il problema stava chiamando:
return HttpResponseRedirect(
'https://www.google.com/a/thedomain.com/o8/ud?be=o8'
+ '?'
+ urllib.urlencode(parameters)
)
Si può macchiarlo? Sì, è stato l'esplicita inclusione del punto interrogativo che ha causato il problema. Due stringhe di query non esistono in una sola volta.