Como configurar a validação da chave de API

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Para configurar a validação de chave de API para uma API, anexe uma política do tipo "Verificar chave de API". A única configuração necessária para uma política VerifyAPIKey é o local esperado da chave de API na solicitação do cliente. O proxy de API verifica a localização especificada e extrai a chave de API. Se a chave de API não estiver presente no local esperado, um erro será gerado e a solicitação será rejeitada. As chaves de API podem estar localizadas em um parâmetro de consulta, um parâmetro de formulário ou um cabeçalho HTTP.

Por exemplo, a configuração da política abaixo define o local esperado da chave como um parâmetro de consulta chamado apikey. Uma solicitação bem-sucedida precisa apresentar a chave de API como um parâmetro de consulta anexado à solicitação, por exemplo, ?apikey=Y7yeiuhcbKJHD790.

Para verificar as chaves de API, crie a seguinte política:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Essa política pode ser anexada a qualquer API que você precise proteger.

Uma documentação abrangente desse tipo de política pode ser encontrada no tópico de referência da política VerifyAPIKey.

Os proxies de API passam automaticamente por todos os cabeçalhos HTTP e parâmetros de consulta presentes na solicitação. Portanto, após a verificação da chave de API, é recomendável removê-la da mensagem para que a chave de API não seja enviada por rede ao serviço de back-end. Para fazer isso, use uma política do tipo AssignMessage da seguinte maneira:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

Anexo da política

As políticas precisam ser anexadas a um fluxo de proxy de API como etapas de processamento. Ao aplicar a política ao PreFlow da solicitação, as chaves de API são verificadas em todas as solicitações recebidas pelo proxy de API de um app cliente. Após a verificação, a chave de API é removida da solicitação de saída.

Anexe as políticas ao ProxyEndpoint do proxy de API a ser protegido da seguinte forma:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

Depois de anexar a política, implante o proxy de API.

Como enviar uma solicitação com uma chave de API válida

Como administrador na sua organização, é possível recuperar qualquer chave de API de qualquer app:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \
  -H "Authorization: Bearer $TOKEN"

Em que $TOKEN está definido como seu token de acesso OAuth 2.0, conforme descrito em Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte Como definir variáveis de ambiente para solicitações de API da Apigee.

O perfil do app retornado para essa chamada fornece a chave do cliente (chave de API) e o secret. O valor da chave do cliente é o valor usado para a chave de API na solicitação para a API protegida.

Por exemplo, uma solicitação que não inclui uma chave de API resulta em uma falha de autorização.

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282

A mensagem de falha indica que a política verificou uma chave de API, mas não encontrou uma chave válida:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

Quando a chave do cliente do app é incluída como um parâmetro de consulta, o resultado esperado é a autorização bem-sucedida:

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

O resultado esperado é uma resposta bem-sucedida do serviço meteorológico.

A modificação do valor da chave de API na solicitação resulta em uma falha de autorização:

curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Resulta em:

OAuth Failure : Consumer Key is Invalid