Como configurar a validação da chave de API

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

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 "Verificar chave de API" é o local esperado da chave 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 Verificar chave de API.

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 pré-fluxo 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://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

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://{org_name}-test.apigee.net/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://{org_name}-test.apigee.net/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://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Resulta em:

OAuth Failure : Consumer Key is Invalid

Como administrador da sua organização, você pode recuperar a chave do cliente de qualquer app registrado em uma organização:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password