Configurando a validação da chave de API

Esta página se aplica ao Apigee e ao Apigee híbrido .

Veja a documentação do Apigee Edge .

Você pode configurar a validação da chave de API para uma API anexando uma política do tipo Verify API Key. 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 da API verificará o local especificado e extrairá 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 de política abaixo define o local da chave esperado como um parâmetro de consulta denominado apikey . Uma solicitação bem-sucedida deve apresentar a chave de API como um parâmetro de consulta anexado à solicitação, por exemplo, ?apikey=Y7yeiuhcbKJHD790 .

Para verificar chaves de 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 você precise proteger.

A documentação abrangente desse tipo de política pode ser encontrada no tópico de referência de política, 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 ela não seja enviada para o serviço de back-end. Você pode fazer isso usando 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 de apólice

As políticas devem ser anexadas a um fluxo de proxy de API como etapas de processamento. Ao aplicar a política ao PreFlow de solicitação, as chaves de API são verificadas em cada solicitação recebida pelo proxy de API de um aplicativo 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 da API a ser protegido da seguinte maneira:

<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 da API.

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

Como administrador da sua organização, você pode recuperar a chave de API de qualquer aplicativo da seguinte maneira:

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

Onde $TOKEN é definido como seu token de acesso OAuth 2.0, conforme descrito em Como obter um token de acesso OAuth 2.0 . Para obter informações sobre as opções curl usadas neste exemplo, consulte Usando curl . Para obter uma descrição das variáveis ​​de ambiente usadas, consulte Definindo variáveis ​​de ambiente para solicitações da API da Apigee .

O perfil do aplicativo retornado para esta chamada fornece a chave do consumidor (chave de API) e o segredo. O valor da chave do consumidor é o valor que você usa para a chave de API na sua solicitação à 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 consumidor do aplicativo é 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.

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

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

Resultados em:

OAuth Failure : Consumer Key is Invalid