DocID®Documentação do DocID®
Voltar ao DocID®
  • Visão geral

    • Documentação do DocID®
  • Introdução

    • Introdução
    • Como funciona o DocID®
    • Conceitos fundamentais
  • Primeiros passos

    • Primeiros passos
    • Módulo Drupal
    • Plugin WordPress
    • Site personalizado
    • Checklist de entrada em produção
  • Funcionalidades

    • Funcionalidades
    • Standard Login
    • Acesso e personalização
    • Analytics
    • Campaigns
  • Licenças

    • Licenças
  • OAuth 2.0

    • OAuth 2.0
    • Configurar um cliente
    • Fluxo Authorization Code
    • Scopes e UserInfo
    • Segurança e ambientes
  • API

    • API
  • Ajuda

    • Resolução de problemas

OAuth 2.0

Fluxo Authorization Code

Implemente com segurança a autorização, PKCE, a troca de código, a renovação e o encerramento de sessão.

1. Gerar os valores da transação

Para cada tentativa de login, gere:

  • um valor state de alta entropia para associar o pedido ao callback
  • um valor nonce para associar as informações de identidade ao pedido
  • um code_verifier
  • PKCE de alta entropia e um code_challenge, calculado como o resumo SHA-256 do verifier codificado em base64url

Guarde os valores numa transação de curta duração protegida no servidor.

2. Redirecionar para a autorização

1GET /oauth2/authorize?2  response_type=code&3  client_id=YOUR_CLIENT_ID&4  redirect_uri=https%3A%2F%2Fexample.com%2Fauth%2Fdocid%2Fcallback&5  scope=openid%20professional&6  state=RANDOM_STATE&7  nonce=RANDOM_NONCE&8  code_challenge=PKCE_CHALLENGE&9  code_challenge_method=S256

3. Validar o callback

Um callback bem-sucedido contém code e state. Compare state com o valor guardado, utilizando uma comparação de tempo constante sempre que possível. Rejeite transações ausentes, reutilizadas, expiradas ou não correspondentes.

Um callback sem sucesso contém error e pode conter error_description. Registe apenas um identificador de correlação interno seguro e apresente ao utilizador uma mensagem clara que permita tentar novamente.

4. Trocar o código

Envie um pedido de formulário de servidor para servidor:

1POST /oauth2/token2Content-Type: application/x-www-form-urlencoded3Authorization: Basic BASE64_CLIENT_ID_AND_SECRET45grant_type=authorization_code&6code=RETURNED_CODE&7redirect_uri=https%3A%2F%2Fexample.com%2Fauth%2Fdocid%2Fcallback&8code_verifier=ORIGINAL_PKCE_VERIFIER

As credenciais do cliente também podem ser aceites no corpo do formulário quando essa opção estiver configurada, mas HTTP Basic mantém as credenciais separadas dos parâmetros do grant.

5. Obter as informações do utilizador

1GET /oauth2/userinfo2Authorization: Bearer ACCESS_TOKEN

Utilize a resposta para criar uma sessão local no site e, em seguida, elimine a transação OAuth de utilização única.

Renovar e revogar

Troque um refresh token válido com grant_type=refresh_token em /oauth2/token. Guarde os refresh tokens apenas no servidor. Quando a integração já não precisar de um token, revogue-o em /oauth2/revoke e invalide a sessão local.

AnteriorConfigurar um clienteSeguinteScopes e UserInfo

Nesta página

  1. 1. Gerar os valores da transação
  2. 2. Redirecionar para a autorização
  3. 3. Validar o callback
  4. 4. Trocar o código
  5. 5. Obter as informações do utilizador
  6. Renovar e revogar