Como aprovar e revogar tokens de acesso

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Como revogar tokens de acesso e de atualização

Em alguns casos, os apps precisam revogar ou invalidar tokens explicitamente, por exemplo, quando um usuário sai de um app ativado para OAuth. Se você revogar um token, ele poderá ser aprovado novamente a qualquer momento antes de ele expirar.

O procedimento para revogação de token é definido pela especificação da revogação de token OAuth 2.0.

O Apigee Edge fornece uma operação InvalidateToken que permite configurar um endpoint de revogação de token dedicado. Ao publicar o URI desse endpoint, você permite que os desenvolvedores de apps invalidem os tokens emitidos pelo Edge.

Veja um exemplo de configuração da política de OAuthV2 e da operação InvalidateToken. Nesse caso, o token de acesso e o token de atualização associado são revogados. Tecnicamente, eles são revogados porque a sinalização em cascata está definida como "true". Para mais informações sobre como a sinalização em cascata funciona, consulte a seção de atributos do elemento Token abaixo.

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Elemento <Tokens>/<Token>

Identifica a variável de fluxo que especifica o token a ser revogado. Se espera-se que os desenvolvedores enviem uma solicitação de revogação usando um parâmetro de consulta chamado access_token, por exemplo, a variável de fluxo correta será: request.queryparam.access_token. Para exigir o token em um cabeçalho HTTP, por exemplo, defina esse valor como request.header.access_token.

Atributos

  • type (obrigatório, string): o tipo de token identificado pela variável especificada. Os valores aceitos são accesstoken e refreshtoken:
    • Para revogar um token de acesso, especifique o tipo accesstoken.
    • Para revogar os tokens de acesso e de atualização, especifique o tipo refreshtoken. Quando ele vê o tipo de atualização de token, o Edge presume que o token é um token de atualização. Se esse token de atualização for encontrado, ele será revogado. Se esse token de atualização não for encontrado, o Edge verificará se ele é um token de acesso. Se o token de acesso existir, ele será revogado.

      Observação: se você passar um token já invalidado para uma política InvalidateToken, a política não retornará um erro, mesmo que você espere por um. Essa operação não tem efeito.
  • cascade (opcional, booleano, padrão: verdadeiro) O uso principal desse atributo é revogar um token de atualização sem revogar o token de acesso associado a ele. Considere estes casos:
    • Revogue apenas um token de atualização e não revogue o token de acesso associado. Para fazer isso, defina o tipo de <Token> como refreshtoken e defina a cascata como false.
    • Revogue o token de acesso e o token de atualização. Para isso, defina o tipo <Token> como accesstoken. O valor de cascata pode ser true (o padrão) ou false. Se você defini-lo como true, o token de acesso e o token de atualização serão revogados. Se você defini-lo como false, o token de acesso será revogado e o token de atualização não poderá ser usado. Veja mais detalhes na observação abaixo.
    • Revogue um token de acesso e não revogar o token de atualização associado. Não compatível. Veja mais detalhes na observação abaixo.

Observação: por motivos de segurança, se você revogar um token de acesso, o token de atualização associado também será revogado. Portanto, não é possível usar o atributo cascata para revogar apenas um token de acesso. Por exemplo, se você definir o tipo <Token> como accesstoken e definir cascade=false, o token de acesso será revogado (conforme esperado). No entanto, o token de atualização associado não pode ser usado. Ele não pode ser usado para atualizar o token de acesso revogado. O principal caso de uso do atributo em cascata é quando você quer revogar apenas um token de atualização. Nesse caso, defina o tipo <Token> como refreshtoken e defina cascade=false. O token de atualização será revogado, mas o token de acesso associado permanecerá válido, até que ele expire ou seja revogado. Para mais informações, consulte esta discussão do fórum da comunidade.

Como aprovar tokens de acesso e de atualização

Use a operação ValidateToken para "reaprovar" um token revogado. Ou seja, quando você aplicar essa operação, o status do token de acesso ou atualização será alterado de "revogado" para "aprovado". Você pode validar qualquer token revogado que ainda não tenha expirado.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Elemento <Tokens>/<Token>

Identifica a variável de fluxo que especifica o token a ser validado. Se espera-se que os desenvolvedores enviem uma solicitação de validação usando um parâmetro de consulta chamado access_token, por exemplo, a variável de fluxo correta será: request.queryparam.access_token. Para exigir o token em um cabeçalho HTTP, por exemplo, defina esse valor como request.header.access_token.

Atributos

  • type (obrigatório, string) O tipo de token identificado pela variável especificada. Os valores aceitos são accesstoken e refreshtoken.
  • cascade (opcional, booleano): por padrão, essa opção é definida como true, e faz com que a validação seja propagada para os tokens associados. Portanto, se aplicado a um token de atualização, o token de acesso associado a ele também será validado Se aplicado a um token de acesso, o token de atualização associado também será validado. Se você definir essa opção como false, somente o token especificado de acesso ou de atualização será validado.