Proteja uma API solicitando chaves de API, Proteja uma API solicitando chaves de API

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

Veja a documentação do Apigee Edge .

Vídeo: confira este breve vídeo para uma introdução sobre como proteger sua API.

O que você aprenderá

Este tutorial explica como:

  • Crie um proxy de API que exija uma chave de API.
  • Crie um produto de API, um desenvolvedor e um aplicativo de desenvolvedor.
  • Chame sua API com uma chave de API.

É importante proteger sua API contra acesso não autorizado. Uma maneira de fazer isso é com chaves de API.

Quando um aplicativo faz uma solicitação a um proxy de API configurado para verificar uma chave de API, o aplicativo deve fornecer uma chave válida. Em tempo de execução, a política "Verificar Chave de API" verifica se a chave de API fornecida:

  • É válido
  • Não foi revogado
  • Corresponde à chave de API do produto de API que expõe os recursos solicitados

Se a chave for válida, a solicitação será permitida. Se a chave for inválida, a solicitação resultará em uma falha de autorização.

Crie o proxy da API

  1. Acesse a interface do usuário da Apigee e faça login.
  2. Selecione sua organização usando o menu suspenso no canto superior esquerdo da interface do usuário.
  3. Clique em Desenvolver > Proxies de API para exibir a lista de proxies de API.

  4. Clique em Criar novo .
    Botão Criar proxy
  5. No assistente Criar um proxy, selecione Proxy reverso (mais comum) .
  6. Configure o proxy da seguinte maneira:
    Neste campo faça isso
    Nome do proxy Digite: helloworld_apikey
    Caminho Base do Projeto

    Alterar para: /helloapikey

    O Caminho Base do Projeto faz parte da URL usada para fazer solicitações ao proxy da API.

    Descrição Digite: hello world protected by API key
    Alvo (API existente)

    Digite: http://mocktarget.apigee.net

    Isso define a URL de destino que a Apigee invoca em uma solicitação ao proxy da API. Esse destino retorna apenas uma resposta simples: Hello, Guest!

  7. Clique em Avançar .
  8. Na página Políticas comuns , selecione Chave de API . Esta opção adiciona automaticamente duas políticas ao seu proxy de API e cria um produto de API necessário para gerar a chave de API.
  9. Clique em Avançar .
  10. Na página Resumo, certifique-se de que um ambiente de implantação esteja selecionado e clique em Criar e implantar .
  11. Clique em Editar proxy para exibir a página Visão geral do proxy da API.

Ver as políticas

  1. No editor de proxy da API, clique na aba Desenvolver . Você verá que duas políticas foram adicionadas ao fluxo de solicitação do proxy da API:
    • Verificar chave de API – Verifica a chamada de API para garantir que uma chave de API válida esteja presente (enviada como um parâmetro de consulta).
    • Remover parâmetro de consulta apikey – Uma política de atribuição de mensagem que remove a chave de API depois que ela é verificada, para que ela não seja repassada e exposta desnecessariamente.
  2. Clique no ícone da política Verificar Chave de API na visualização de fluxo e observe a configuração XML da política na visualização de código inferior. O elemento <APIKey> informa à política onde ela deve procurar a chave de API quando a chamada é feita. Por padrão, ela procura a chave como um parâmetro de consulta chamado apikey na solicitação HTTP:

    <APIKey ref="request.queryparam.apikey" />

    O nome apikey é arbitrário e pode ser qualquer propriedade que contenha a chave de API.

Tente chamar a API

Nesta etapa, você fará uma chamada de API bem-sucedida diretamente para o serviço de destino e, em seguida, fará uma chamada malsucedida para o proxy de API para ver como ele está sendo protegido pelas políticas.

  1. Sucesso

    Em um navegador da web, acesse o seguinte endereço. Este é o serviço de destino para o qual o proxy da API está configurado para encaminhar a solicitação, mas você o acessará diretamente por enquanto:

    http://mocktarget.apigee.net

    Você deve receber esta resposta bem-sucedida: Hello, Guest!

  2. Falha

    Agora tente chamar seu proxy de API:

    curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey

    onde YOUR ENV_GROUP_HOSTNAME é o nome do host do grupo de ambiente. Consulte Encontrar o nome do host do grupo de ambiente .

    Sem a política Verificar Chave de API, esta chamada forneceria a mesma resposta da chamada anterior. Mas, neste caso, você deverá receber a seguinte resposta de erro:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    o que significa, corretamente, que você não passou uma chave de API válida (como um parâmetro de consulta).

Nas próximas etapas, você obterá a chave de API necessária.

Adicionando um produto de API

Para adicionar um produto de API usando a interface do usuário do Apigee:

  1. Selecione Publicar > Produtos de API .
  2. Clique em +Criar .
  3. Insira os detalhes do produto para sua API.
    Campo Descrição
    Nome Nome interno do produto da API. Não especifique caracteres especiais no nome.
    Observação: você não pode editar o nome depois que o produto da API for criado.
    Nome de exibição Nome de exibição do produto da API. O nome de exibição é usado na interface do usuário e você pode editá-lo a qualquer momento. Se não for especificado, o valor "Nome" será usado. Este campo é preenchido automaticamente com o valor "Nome"; você pode editar ou excluir seu conteúdo. O nome de exibição pode incluir caracteres especiais.
    Descrição Descrição do produto API.
    Ambiente Ambientes aos quais o produto da API permitirá acesso. Por exemplo, test ou prod .
    Acesso Selecione Público .
    Aprovar automaticamente solicitações de acesso Habilite a aprovação automática de solicitações de chaves para este produto de API de qualquer aplicativo.
    Contingente Ignore neste tutorial.
    Escopos OAuth permitidos Ignore neste tutorial.
  4. Na seção Operações , clique em ADICIONAR UMA OPERAÇÃO .
  5. No campo Proxy de API, selecione o proxy de API que você acabou de criar.
  6. No campo Caminho, digite "/". Ignore os outros campos.
  7. Clique em Salvar para salvar a operação.
  8. Clique em Salvar para salvar o produto da API.

Adicione um desenvolvedor e um aplicativo à sua organização

A seguir, simularemos o fluxo de trabalho de um desenvolvedor se cadastrando para usar suas APIs. Um desenvolvedor terá um ou mais aplicativos que chamam suas APIs, e cada aplicativo recebe uma chave de API exclusiva. Isso dá a você, o provedor da API, um controle mais granular sobre o acesso às suas APIs e relatórios mais granulares sobre o tráfego de API por aplicativo.

Criar um desenvolvedor

Para criar um desenvolvedor:

  1. Selecione Publicar > Desenvolvedores no menu.
    Nota : Se você ainda estiver na tela Desenvolver, clique em "<" em DESENVOLVER para exibir o menu e selecione Publicar > Desenvolvedores
  2. Clique em + Desenvolvedor .
  3. Digite o seguinte na janela Novo desenvolvedor:
    Neste campo digitar
    Primeiro nome Keyser
    Sobrenome Soze
    Nome de usuário keyser
    E-mail [email protected]
  4. Clique em Criar .

Registrar um aplicativo

Para registrar um aplicativo de desenvolvedor:

  1. Selecione Publicar > Aplicativos .
  2. Clique em + Aplicativo .
  3. Digite o seguinte na janela Novo aplicativo para desenvolvedor:
    Neste campo faça isso
    Nome e nome de exibição Digite: keyser_app
    Desenvolvedor Selecione: Keyser Soze ([email protected])
    URL de retorno de chamada e notas Deixe em branco
  4. Na seção Credenciais, selecione Nunca . As credenciais deste aplicativo nunca expirarão.
  5. Clique em Adicionar produto .
  6. Selecione o produto que você acabou de criar.
  7. Clique em Criar .

Obtenha a chave da API

Para obter a chave de API:

  1. Na página Aplicativos (Publicar > Aplicativos), clique em keyser_app .
  2. Na página keyser_app , clique em Mostrar ao lado de Chave na seção Credenciais . Observe que a chave está associada ao produto que você criou.
  3. Selecione e copie a chave. Você a usará na próxima etapa.

Chame a API com uma chave

Agora que você tem uma chave de API, pode usá-la para chamar o proxy da API. Cole a chave de API como mostrado, como um parâmetro de consulta. Certifique-se de que não haja espaços extras no parâmetro de consulta.

curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=your_api_key

Agora, quando você chamar o proxy da API, deverá receber esta resposta: Hello, Guest!

Parabéns! Você criou um proxy de API e o protegeu exigindo que uma chave de API válida fosse incluída na chamada.

Observe que, em geral, não é uma boa prática passar uma chave de API como parâmetro de consulta. Você deve considerar passá-la no cabeçalho HTTP .

Melhor prática: Passando a chave no cabeçalho HTTP

Nesta etapa, você modificará o proxy para procurar a chave de API em um cabeçalho chamado x-apikey .

  1. Edite o proxy da API. Selecione Desenvolver > Proxies de API > helloworld_apikey e acesse a visualização Desenvolver .
  2. Selecione a política Verificar chave de API e modifique o XML da política para informar à política para procurar no header em vez de no queryparam :

    <APIKey ref="request.header.x-apikey"/>
  3. Salve o proxy da API e use Deploy para implantá-lo.
  4. Faça a seguinte chamada de API usando cURL para passar a chave de API como um cabeçalho chamado x-apikey . Não se esqueça de substituir o nome da sua organização.

    curl -v -H "x-apikey: {api_key_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey

Observe que, para concluir a alteração, você também precisa configurar a política de Atribuição de Mensagem para remover o cabeçalho em vez do parâmetro de consulta. Por exemplo:

<Remove>
  <Headers>
      <Header name="x-apikey"/>
  </Headers>
</Remove>

Tópicos relacionados

Aqui estão alguns tópicos relacionados a produtos e chaves de API:

A proteção de APIs geralmente envolve segurança adicional, como OAuth , um protocolo aberto que troca credenciais (como nome de usuário e senha) por tokens de acesso. Tokens de acesso são sequências longas e aleatórias que podem ser passadas por um pipeline de mensagens, inclusive de aplicativo para aplicativo, sem comprometer as credenciais originais.

Para uma visão geral de tópicos relacionados à segurança, consulte Protegendo um proxy .

,

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

Veja a documentação do Apigee Edge .

Vídeo: confira este breve vídeo para uma introdução sobre como proteger sua API.

O que você aprenderá

Este tutorial explica como:

  • Crie um proxy de API que exija uma chave de API.
  • Crie um produto de API, um desenvolvedor e um aplicativo de desenvolvedor.
  • Chame sua API com uma chave de API.

É importante proteger sua API contra acesso não autorizado. Uma maneira de fazer isso é com chaves de API.

Quando um aplicativo faz uma solicitação a um proxy de API configurado para verificar uma chave de API, o aplicativo deve fornecer uma chave válida. Em tempo de execução, a política "Verificar Chave de API" verifica se a chave de API fornecida:

  • É válido
  • Não foi revogado
  • Corresponde à chave de API do produto de API que expõe os recursos solicitados

Se a chave for válida, a solicitação será permitida. Se a chave for inválida, a solicitação resultará em uma falha de autorização.

Crie o proxy da API

  1. Acesse a interface do usuário da Apigee e faça login.
  2. Selecione sua organização usando o menu suspenso no canto superior esquerdo da interface do usuário.
  3. Clique em Desenvolver > Proxies de API para exibir a lista de proxies de API.

  4. Clique em Criar novo .
    Botão Criar proxy
  5. No assistente Criar um proxy, selecione Proxy reverso (mais comum) .
  6. Configure o proxy da seguinte maneira:
    Neste campo faça isso
    Nome do proxy Digite: helloworld_apikey
    Caminho Base do Projeto

    Alterar para: /helloapikey

    O Caminho Base do Projeto faz parte da URL usada para fazer solicitações ao proxy da API.

    Descrição Digite: hello world protected by API key
    Alvo (API existente)

    Digite: http://mocktarget.apigee.net

    Isso define a URL de destino que a Apigee invoca em uma solicitação ao proxy da API. Esse destino retorna apenas uma resposta simples: Hello, Guest!

  7. Clique em Avançar .
  8. Na página Políticas comuns , selecione Chave de API . Esta opção adiciona automaticamente duas políticas ao seu proxy de API e cria um produto de API necessário para gerar a chave de API.
  9. Clique em Avançar .
  10. Na página Resumo, certifique-se de que um ambiente de implantação esteja selecionado e clique em Criar e implantar .
  11. Clique em Editar proxy para exibir a página Visão geral do proxy da API.

Ver as políticas

  1. No editor de proxy da API, clique na aba Desenvolver . Você verá que duas políticas foram adicionadas ao fluxo de solicitação do proxy da API:
    • Verificar chave de API – Verifica a chamada de API para garantir que uma chave de API válida esteja presente (enviada como um parâmetro de consulta).
    • Remover parâmetro de consulta apikey – Uma política de atribuição de mensagem que remove a chave de API depois que ela é verificada, para que ela não seja repassada e exposta desnecessariamente.
  2. Clique no ícone da política Verificar Chave de API na visualização de fluxo e observe a configuração XML da política na visualização de código inferior. O elemento <APIKey> informa à política onde ela deve procurar a chave de API quando a chamada é feita. Por padrão, ela procura a chave como um parâmetro de consulta chamado apikey na solicitação HTTP:

    <APIKey ref="request.queryparam.apikey" />

    O nome apikey é arbitrário e pode ser qualquer propriedade que contenha a chave de API.

Tente chamar a API

Nesta etapa, você fará uma chamada de API bem-sucedida diretamente para o serviço de destino e, em seguida, fará uma chamada malsucedida para o proxy de API para ver como ele está sendo protegido pelas políticas.

  1. Sucesso

    Em um navegador da web, acesse o seguinte endereço. Este é o serviço de destino para o qual o proxy da API está configurado para encaminhar a solicitação, mas você o acessará diretamente por enquanto:

    http://mocktarget.apigee.net

    Você deve receber esta resposta bem-sucedida: Hello, Guest!

  2. Falha

    Agora tente chamar seu proxy de API:

    curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey

    onde YOUR ENV_GROUP_HOSTNAME é o nome do host do grupo de ambiente. Consulte Encontrar o nome do host do grupo de ambiente .

    Sem a política Verificar Chave de API, esta chamada forneceria a mesma resposta da chamada anterior. Mas, neste caso, você deverá receber a seguinte resposta de erro:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    o que significa, corretamente, que você não passou uma chave de API válida (como um parâmetro de consulta).

Nas próximas etapas, você obterá a chave de API necessária.

Adicionando um produto de API

Para adicionar um produto de API usando a interface do usuário do Apigee:

  1. Selecione Publicar > Produtos de API .
  2. Clique em +Criar .
  3. Insira os detalhes do produto para sua API.
    Campo Descrição
    Nome Nome interno do produto da API. Não especifique caracteres especiais no nome.
    Observação: você não pode editar o nome depois que o produto da API for criado.
    Nome de exibição Nome de exibição do produto da API. O nome de exibição é usado na interface do usuário e você pode editá-lo a qualquer momento. Se não for especificado, o valor "Nome" será usado. Este campo é preenchido automaticamente com o valor "Nome"; você pode editar ou excluir seu conteúdo. O nome de exibição pode incluir caracteres especiais.
    Descrição Descrição do produto API.
    Ambiente Ambientes aos quais o produto da API permitirá acesso. Por exemplo, test ou prod .
    Acesso Selecione Público .
    Aprovar automaticamente solicitações de acesso Habilite a aprovação automática de solicitações de chaves para este produto de API de qualquer aplicativo.
    Contingente Ignore neste tutorial.
    Escopos OAuth permitidos Ignore neste tutorial.
  4. Na seção Operações , clique em ADICIONAR UMA OPERAÇÃO .
  5. No campo Proxy de API, selecione o proxy de API que você acabou de criar.
  6. No campo Caminho, digite "/". Ignore os outros campos.
  7. Clique em Salvar para salvar a operação.
  8. Clique em Salvar para salvar o produto da API.

Adicione um desenvolvedor e um aplicativo à sua organização

A seguir, simularemos o fluxo de trabalho de um desenvolvedor se cadastrando para usar suas APIs. Um desenvolvedor terá um ou mais aplicativos que chamam suas APIs, e cada aplicativo recebe uma chave de API exclusiva. Isso dá a você, o provedor da API, um controle mais granular sobre o acesso às suas APIs e relatórios mais granulares sobre o tráfego de API por aplicativo.

Criar um desenvolvedor

Para criar um desenvolvedor:

  1. Selecione Publicar > Desenvolvedores no menu.
    Nota : Se você ainda estiver na tela Desenvolver, clique em "<" em DESENVOLVER para exibir o menu e selecione Publicar > Desenvolvedores
  2. Clique em + Desenvolvedor .
  3. Digite o seguinte na janela Novo desenvolvedor:
    Neste campo digitar
    Primeiro nome Keyser
    Sobrenome Soze
    Nome de usuário keyser
    E-mail [email protected]
  4. Clique em Criar .

Registrar um aplicativo

Para registrar um aplicativo de desenvolvedor:

  1. Selecione Publicar > Aplicativos .
  2. Clique em + Aplicativo .
  3. Digite o seguinte na janela Novo aplicativo para desenvolvedor:
    Neste campo faça isso
    Nome e nome de exibição Digite: keyser_app
    Desenvolvedor Selecione: Keyser Soze ([email protected])
    URL de retorno de chamada e notas Deixe em branco
  4. Na seção Credenciais, selecione Nunca . As credenciais deste aplicativo nunca expirarão.
  5. Clique em Adicionar produto .
  6. Selecione o produto que você acabou de criar.
  7. Clique em Criar .

Obtenha a chave da API

Para obter a chave de API:

  1. Na página Aplicativos (Publicar > Aplicativos), clique em keyser_app .
  2. Na página keyser_app , clique em Mostrar ao lado de Chave na seção Credenciais . Observe que a chave está associada ao produto que você criou.
  3. Selecione e copie a chave. Você a usará na próxima etapa.

Chame a API com uma chave

Agora que você tem uma chave de API, pode usá-la para chamar o proxy da API. Cole a chave de API como mostrado, como um parâmetro de consulta. Certifique-se de que não haja espaços extras no parâmetro de consulta.

curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=your_api_key

Agora, quando você chamar o proxy da API, deverá receber esta resposta: Hello, Guest!

Parabéns! Você criou um proxy de API e o protegeu exigindo que uma chave de API válida fosse incluída na chamada.

Observe que, em geral, não é uma boa prática passar uma chave de API como parâmetro de consulta. Você deve considerar passá-la no cabeçalho HTTP .

Melhor prática: Passando a chave no cabeçalho HTTP

Nesta etapa, você modificará o proxy para procurar a chave de API em um cabeçalho chamado x-apikey .

  1. Edite o proxy da API. Selecione Desenvolver > Proxies de API > helloworld_apikey e acesse a visualização Desenvolver .
  2. Selecione a política Verificar chave de API e modifique o XML da política para informar à política para procurar no header em vez de no queryparam :

    <APIKey ref="request.header.x-apikey"/>
  3. Salve o proxy da API e use Deploy para implantá-lo.
  4. Faça a seguinte chamada de API usando cURL para passar a chave de API como um cabeçalho chamado x-apikey . Não se esqueça de substituir o nome da sua organização.

    curl -v -H "x-apikey: {api_key_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey

Observe que, para concluir a alteração, você também precisa configurar a política de Atribuição de Mensagem para remover o cabeçalho em vez do parâmetro de consulta. Por exemplo:

<Remove>
  <Headers>
      <Header name="x-apikey"/>
  </Headers>
</Remove>

Tópicos relacionados

Aqui estão alguns tópicos relacionados a produtos e chaves de API:

A proteção de APIs geralmente envolve segurança adicional, como OAuth , um protocolo aberto que troca credenciais (como nome de usuário e senha) por tokens de acesso. Tokens de acesso são sequências longas e aleatórias que podem ser passadas por um pipeline de mensagens, inclusive de aplicativo para aplicativo, sem comprometer as credenciais originais.

Para uma visão geral de tópicos relacionados à segurança, consulte Protegendo um proxy .