Resposta da Autenticação
Após o usuário realizar o login com suas credenciais, ele será redirecionado para a URI informada na requisição. Casos de falha também serão redirecionados para o endereço informado. Em ambos os casos, informações adicionais serão enviadas via query string.
Caso de Sucesso
Em caso de sucesso, o usuário será redirecionado para a URI informada, com o código de autorização (Authorization Code) informado no formato de query string:
https://exemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685Se você incluiu o parâmetro state na requisição, ele será retornado:
https://exemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685&state=af0ifjsldkjEm caso de sucesso, o fluxo deve continuar para a etapa de troca de token, onde o Authorization Code recebido deverá ser informado na comunicação em back-channel (servidor para servidor), para fins de segurança.
Caso de Falha
Em caso de falha, o usuário será redirecionado para a URI informada, com os parâmetros a respeito do erro ocorrido informados no formato de query string:
https://exemplo.com.br/callback?error=unauthorized_client&error_description=The Client ID informed by the client is not valid.&error_uri=https://faq.xxxid.com.br/erroParâmetros de Erro
| Parâmetro | Descrição |
|---|---|
error | Código do erro |
error_description | Descrição detalhada do erro |
error_uri | URI com mais informações sobre o erro |
Possíveis Erros
unauthorized_client: O Client ID informado não é válidoinvalid_request: A URI informada não corresponde a nenhuma das URIs registradas do Clienteinvalid_request: O uso da propriedade id_token_hint requer que o valor de prompt seja definido como 'none'
Validação do State
Se você incluiu o parâmetro state na requisição, sempre valide se o valor retornado corresponde ao valor enviado. Isso ajuda a prevenir ataques CSRF.
Exemplo de Implementação
const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get('code');
const error = urlParams.get('error');
const state = urlParams.get('state');
if (error) {
console.error('Erro na autenticação:', error);
const errorDescription = urlParams.get('error_description');
console.error('Descrição:', errorDescription);
} else if (code) {
if (state && state !== sessionStorage.getItem('oauth_state')) {
console.error('State não corresponde - possível ataque CSRF');
return;
}
trocarCodigoPorToken(code);
}Próximo Passo
Após receber o código de autorização, continue para Endpoint de Tokens.
