2016-01-10 19 views
5

Sto cercando informazioni concrete sullo stato di RFC7636 (chiave di prova per gli scambi di token OAuth) nelle API OAuth2 di Google.In che misura le API di Google OAuth 2.0 supportano RFC7636?

Google espone un'API provider OAuth 2.0 e OIDC in cui è possibile ottenere token di accesso. Vi è uno standard proposto descritto nella RFC7636 per l'utilizzo delle chiavi di verifica nelle piattaforme di scambio di token che abbiamo iniziato a utilizzare nelle nostre integrazioni con i principali provider di identità. Alcuni accettano la chiave di prova, altri la ignorano; Google sembra esserne consapevole ma non riesce a convalidare la chiave di prova. Non sono stato in grado di trovare alcuna menzione di questo wrt di Google.

In concreto, quando si segue il flusso codice di autorizzazione di OAuth 2.0 con Google come provider che generare un numero casuale, hash utilizzando SHA256, codificare base64 URL, e poi passarlo a https://accounts.google.com/o/oauth2/v2/auth come parametro "code_challenge" e "codice_challenge_metodo" come da specifica.

L'endpoint accetta i parametri ed emette un token di autorizzazione come al solito. Quando si ottiene il token di accesso, si chiama https://www.googleapis.com/oauth2/v4/token con code_verifier; l'endpoint restituisce il seguente errore 400 HTTP che suggerisce l'esistenza di una consapevolezza dei verificatori di codice: { "errore": "invalid_grant", "error_description": "Mancante verificatore di codice." }

La documentazione di Google OAuth all'indirizzo developers.google.com/identity/protocols/OAuth2 non menziona nessuno di questi parametri; il campo dell'API non si estende alla riproduzione con gli endpoint di autenticazione e token di OAuth2. Qualsiasi intuizione sarebbe molto apprezzata.

+0

Hai funzionato? Sto avendo lo stesso identico problema: {"errore": "invalid_grant", "error_description": "Missing code verificator". }, utilizzando l'app iOS di SDK iOS, che colpisce gli stessi endpoint menzionati nel post. – quantum

risposta

0

Stavo avendo lo stesso problema usando AppAuth e un client Android. Per correggerlo dovevo impostare un campo 'code_verifier' corrispondente su entrambe le richieste di autorizzazione e token. Puoi trovare una descrizione più approfondita in questo post: invalid_grant trying to get oAuth token from google