É possível obter informações de perfil em um id_token do Google?
Ao usar o sistema de autenticação OpenIDConnect do Google, é possível especificaremail
ouprofile
ou ambos noscope
parâmetro. Se você solicitar oemail
escopo, as reivindicações "email" e "email_verified" serão incluídas noid_token
que é retornado como parte de uma sessão de autenticação bem-sucedida do OAuth2.
Aqui está um exemploda documentação do Google:
Carga útil de um token de ID
Um token de ID é um objeto JSON que contém um conjunto de pares nome / valor. Aqui está um exemplo, formatado para facilitar a leitura:
{"iss":"accounts.google.com",
"at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q",
"email_verified":"true",
"sub":"10769150350006150715113082367",
"azp":"1234987819200.apps.googleusercontent.com",
"email":"[email protected]",
"aud":"1234987819200.apps.googleusercontent.com",
"iat":1353601026,
"exp":1353604926,
"hd":"example.com"
}
Entretanto, solicitando oprofile
O escopo parece não ter nenhum efeito sobre o conteúdo do id_token. Para recuperar as informações do perfil, você deve fazer umasolicitação HTTP separada para um terminal distinto (autenticado com o access_token que você acabou de receber) para obter um documento muito parecido, mas com mais informações:
{
"kind": "plus#personOpenIdConnect",
"gender": string,
"sub": string,
"name": string,
"given_name": string,
"family_name": string,
"profile": string,
"picture": string,
"email": string,
"email_verified": "true",
"locale": string,
"hd": string
}
Idealmente, eu preferiria obter as informações do perfil (apenasname
, na verdade) incluídas no JWT id_token em vez de precisar fazer uma chamada separada. Existe alguma maneira de especificar campos adicionais e incluí-los como declarações no id_token? Se não, por que éemail
tratado especialmente e retornado no id_token?