Configurar a validação da chave da API

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Pode configurar a validação da chave da API para uma API anexando uma política do tipo Verificar chave da API. A única definição obrigatória para uma política VerifyAPIKey é a localização esperada da chave da API no pedido do cliente. O proxy de API verifica a localização especificada e extrai a chave da API. Se a chave da API não estiver na localização esperada, é gerado um erro e o pedido é rejeitado. As chaves de API podem estar localizadas num parâmetro de consulta, num parâmetro de formulário ou num cabeçalho HTTP.

Por exemplo, a configuração da política abaixo define a localização esperada da chave como um parâmetro de consulta denominado apikey. Um pedido bem-sucedido tem de apresentar a chave API como um parâmetro de consulta anexado ao pedido, por exemplo,?apikey=Y7yeiuhcbKJHD790.

Para validar chaves da API, crie a seguinte política:

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

Esta política pode ser anexada a qualquer API que precise de proteger.

Pode encontrar documentação abrangente deste tipo de política no tópico de referência da política, Política VerifyAPIKey.

Os proxies de API transmitem automaticamente todos os cabeçalhos HTTP e parâmetros de consulta presentes no pedido. Por conseguinte, depois de a chave da API ter sido validada, é uma boa ideia removê-la da mensagem para que não seja enviada através da rede para o serviço de back-end. Pode fazê-lo através de uma política do tipo AssignMessage da seguinte forma:

<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 de políticas

As políticas têm de estar anexadas a um fluxo de proxy de API como passos de processamento. Ao aplicar a política ao pedido PreFlow, as chaves da API são validadas em todos os pedidos recebidos pelo proxy da API de uma app cliente. Após a validação, a chave da API é removida do pedido de saída.

Anexe as políticas ao ProxyEndpoint do proxy de API a proteger 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, implemente o proxy de API.

Enviar uma solicitação com uma chave da API válida

Enquanto administrador na sua organização, pode obter a chave API de qualquer app da seguinte forma:

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

O perfil da app devolvido para esta chamada fornece a chave de consumidor (chave da API) e o segredo. O valor da chave do consumidor é o valor que usa para a chave da API no seu pedido à API protegida.

Por exemplo, um pedido que não inclua uma chave da API resulta numa falha de autorização.

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

A mensagem de falha indica que a política verificou a existência de uma chave da 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 consumidor da app é incluída como um parâmetro de consulta, o resultado esperado é uma 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 da API no pedido resulta numa falha de autorização:

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

Resultados em:

OAuth Failure : Consumer Key is Invalid