Proteger uma API exigindo chaves de API

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

O que você vai aprender

Neste tutorial, você aprenderá a:

  • Criar um proxy de API que exija uma chave de API.
  • Adicionar um produto de API.
  • Adicionar um desenvolvedor e registrar um app.
  • Chamar a API com uma chave de API.

É importante proteger a API contra acesso não autorizado. Uma forma de fazer isso é com chaves de API (também chamadas de chaves públicas, chaves de chaves ou chaves de app).

Quando um app faz uma solicitação API, o app deve fornecer uma chave válida. No ambiente de execução, a política Verify API Key verifica se a chave de API fornecida:

  • É válido
  • Não foi revogada
  • Corresponde à chave de API do produto de API que expõe a solicitação recursos

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

Neste tutorial, você vai criar um proxy de API que requer uma API válida para acessá-lo.

O que é necessário

  • Uma conta do Apigee Edge. Se você ainda não tem uma conta, inscreva-se com as instruções Como criar uma conta do Apigee Edge.
  • Um navegador da Web para fazer uma chamada de API.
  • (Não é obrigatório para a seção de crédito extra) cURL instalado no para fazer chamadas de API pela linha de comando.

Criar o proxy de API

Sobre o "mocktarget"

O serviço mocktarget é hospedado na Apigee e retorna simples dados. Ele não requer nenhuma chave de API nem um token de acesso. Na verdade, é possível acessá-lo em um navegador da Web. Para testar, clique no seguinte:

http://mocktarget.apigee.net

O destino retorna Hello, Guest!. Use o /help para obter uma página de ajuda com outros recursos de API disponíveis

  1. Ir para https://apigee.com/edge e faça login.
  2. Alterne para a organização desejada clicando em seu nome de usuário no parte superior da barra de navegação lateral para exibir o menu do perfil do usuário e, em seguida, selecione a organização na lista.

    selecionar organização no menu do perfil do usuário
  3. Clique em Proxies da API na página de destino para mostrar a API. lista de proxies.

    Menu das APIs do Edge
  4. Clique em + Proxy.
    Botão "Criar proxy"
  5. Na página Criar proxy, selecione Proxy reverso (mais comum).
  6. Na página Detalhes do proxy, configure o proxy da seguinte maneira:
    Neste campo faça isso
    Nome do proxy Insira: helloworld_apikey
    Caminho base do projeto

    Altere para: /helloapikey

    O Caminho base do projeto é parte do URL usado solicitações ao proxy de API.

    Observação: para recomendações da Apigee sobre controle de versões de APIs, consulte Controle de versões no Design de APIs da Web: aspectos ausentes Link do e-book.

    Existing API

    Insira: http://mocktarget.apigee.net

    Define o URL de destino que o Apigee Edge invoca em uma para o proxy da API.

    Descrição Insira: hello world protected by API key
  7. Clique em Próxima.
  8. Na página Políticas comuns, em Segurança: Autorização, selecione Chave de API e clique em Próximo. Isso adiciona duas políticas ao proxy de API.
  9. Na página Virtual Hosts, selecione default e secure e depois clique em Next. Selecionar padrão permite chame a API com http://. Ao selecionar Segurança, permite chamar a API com https://.
  10. Na página Resumo, verifique se a implantação de teste ambiente é selecionado e, em seguida, clique em Criar e implantar.
  11. Você verá uma confirmação de que o novo proxy de API e uma API foram criados e se o proxy de API foi implantado em seu ambiente de teste.
  12. Clique em Editar proxy para exibir a página Visão geral do proxy de API.

Ver as políticas

  1. No editor de proxy da API, clique na guia Desenvolver. Você verá que duas políticas foram adicionadas ao fluxo de solicitações do proxy de API:
    • Verificar chave de API: verifica a chamada de API para garantir que um endereço A chave de API está presente (enviada como um parâmetro de consulta).
    • Remover API de parâmetro de consulta: uma políticaAssignMessage que remove a chave de API depois de marcada para que ela não seja transmitida; ao redor e expostos desnecessariamente.
  2. Clique no ícone de política "Verificar chave de API" na visualização de fluxo e confira a configuração XML da política na visualização de código inferior. A O elemento <APIKey> informa à política onde ela precisa procure a chave de API quando a chamada for feita. Por padrão, ele procura como um parâmetro de consulta chamado apikey no serviço solicitação:

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

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

Tentar chamar a API

Nesta etapa, você vai fazer uma chamada de API bem-sucedida diretamente para o destino você fará uma chamada sem sucesso ao proxy de API para ver como se esses dados são protegidos por essas políticas.

  1. Sucesso

    Em um navegador da Web, acesse o endereço a seguir. Este é o serviço de destino que o proxy de API está configurado para encaminhar a solicitação, mas você a alcançará diretamente por enquanto:

    http://mocktarget.apigee.net
    

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

  2. Falha

    Agora tente chamar seu proxy de API:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    substituindo ORG_NAME pelo nome Organização de borda.

    Sem a política "Verificar chave de API", esta chamada teria o mesmo que a chamada anterior. Mas, neste caso, você vai receber o seguinte resposta de erro:

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

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

Nas próximas etapas, você vai adicionar um produto de API.

Adicionar um produto de API.

Para adicionar um produto de API usando a IU da Apigee:

  1. Selecione Publicar > Produtos da API.
  2. Clique em +Produto da API.
  3. Insira os Detalhes do produto da API.

    Campo Descrição
    Nome Nome interno do produto de API. Não especificar caracteres especiais no nome.
    Observação:você não é possível editar o nome depois que o produto da API é criado. Para exemplo: helloworld_apikey-Product.
    Nome de exibição Nome de exibição do produto de API. O nome de exibição é usado na interface e você pode editá-lo a qualquer momento. Se não for especificado, o O valor do nome será usado. Este campo é preenchido automaticamente com Valor do nome você pode editar ou excluir o conteúdo dele. A tela pode incluir caracteres especiais. Por exemplo: helloworld_apikey-Product:
    Descrição Descrição do produto de API. Por exemplo, Test product for tutorial.
    Ambiente Ambientes em que o produto de API permitirá acesso. Por exemplo, test ou prod.
    Acesse Selecione Público.
    Aprovar automaticamente solicitações de acesso Ativar a aprovação automática de solicitações de chave para esta API produto em qualquer app.
    Cota Ignorar para este tutorial.
    Escopos do OAuth permitidos Ignorar para este tutorial.
  4. Na seção "Recursos da API", selecione o proxy de API que você quer usar. criados. Por exemplo, helloworld_apikey.
  5. Clique em Adicionar.
  6. Na seção Caminhos, adicione o caminho "/".
  7. Clique em Adicionar.
  8. Clique em Salvar.

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

Adicione um desenvolvedor e um app ao seu organização

A seguir, vamos simular o fluxo de trabalho de um desenvolvedor que se inscreve usar suas APIs. Um desenvolvedor tem um ou mais apps que chamam suas APIs, e cada app recebe uma chave de API exclusiva. Assim, o provedor da API tem mais controle granular sobre o acesso às suas APIs e relatórios mais granulares sobre Tráfego da API por app.

Crie um desenvolvedor

Para criar um desenvolvedor:

  1. Selecione Publicar > Desenvolvedores no menu.
  2. Clique em + Desenvolvedor.
  3. Digite o seguinte na janela "New Developer":

    Neste campo digitar
    Nome Keyser
    Sobrenome Soze
    Username keyser
    E-mail keyser@example.com
  4. Clique em Criar

Registrar um aplicativo

Para registrar um app de desenvolvedor:

  1. Selecione Publicar > Apps.
  2. Clique em + App.
  3. Digite o seguinte na janela New App:

    p
    Neste campo faça isso
    Nome e nome de exibição Insira: keyser_app
    Empresa / desenvolvedor Selecione: Developer
    Desenvolvedor Selecione: Keyser Soze (keyser@example.com)
    Callback URL e Observações Deixar em branco
  4. Na seção Credenciais, selecione Nunca no Menu Validade. As credenciais deste aplicativo nunca expirarão.
  5. Em Produtos, clique em Adicionar produto.
  6. Selecione helloworld_apikey-Product.
  7. Clique em Adicionar.
  8. Clique em Criar acima e à direita de Detalhes do app para salvar seu trabalho.

Encontre a chave de API

Para acessar a chave de API, faça o seguinte:

  1. Na página Apps (Publicar > Apps), clique em keyser_app.
  2. Na página keyser_app, clique em Mostrar ao lado de Chave. na seção Credenciais. Na seção Produto, observe que a chave está associada a helloworld_apikey.

    ,
  3. Selecione e copie a Chave. Ela será usada na próxima etapa.

Chamar a API com uma chave

Agora que você tem uma chave de API, pode usá-la para chamar o proxy de API. Tecla Enter os seguintes no navegador da Web. Substitua o nome da sua organização de Edge para ORG_NAME e a chave de API para API_KEY abaixo. Verifique se não há espaços extras no parâmetro de consulta.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

Agora, ao chamar o proxy de API, você vai receber esta resposta: Hello, Guest!

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

Em geral, não é uma boa prática passar uma chave de API como parâmetro de consulta. Considere transmitindo-a no cabeçalho HTTP.

Prática recomendada: passar 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 de API. Selecione Desenvolver > Proxies de API > helloworld_apikey e acesse a visualização Develop.
  2. Selecione a política Verify API Key e modifique o XML da política para informar a política procurar no header, em vez de queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Salve o proxy da API para implantar a alteração.
  4. Faça a seguinte chamada de API usando cURL para passar a chave de API como uma cabeçalho chamado x-apikey. Não se esqueça de substituir nome da organização.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Para concluir a alteração, você também precisa configurar o A política AttributionMessage para remover o cabeçalho em vez do parâmetro de consulta. Exemplo:

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

Temas relacionados

Veja alguns tópicos diretamente relacionados a este tutorial:

Indo mais fundo, proteger APIs com chaves de API é apenas uma parte da história. Muitas vezes, A proteção de APIs envolve outras medidas de segurança, como o OAuth.

O OAuth é uma protocolo aberto que, em poucas palavras, troca credenciais (como nome de usuário e senha) por ou tokens de acesso. Tokens de acesso são strings longas e aleatórias que podem ser transmitidas em uma mensagem aplicativo, mesmo de app para app, sem comprometer as credenciais originais. Acesso tokens costumam ter vidas curtas, por isso novos estão sempre sendo gerados.