Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Vídeo: veja este breve vídeo para uma introdução sobre como proteger a sua API.
O que vai aprender
Este tutorial explica como:
- Crie um proxy de API que exija uma chave da API.
- Crie um produto API, um programador e uma app de programador.
- Chame a API com uma chave da API.
É importante proteger a sua API contra acesso não autorizado. Uma forma de o fazer é com chaves da API.
Quando uma app faz um pedido a um proxy de API configurado para validar uma chave da API, a app tem de fornecer uma chave válida. Em tempo de execução, a política de chave da API de verificação verifica se a chave da API fornecida:
- É válido
- Não foi revogada
- Corresponde à chave da API do produto da API que expõe os recursos pedidos
Se a chave for válida, o pedido é permitido. Se a chave for inválida, o pedido resulta numa falha de autorização.
Crie o proxy de API
Apigee na Cloud Console
Na Google Cloud consola, aceda à página Desenvolvimento de proxy > Proxies de API.
- Selecione a sua organização no selecionador de projetos do painel do Google Cloud. O nome da organização é igual ao nome do seu projeto do Google Cloud.
- Clique em + Criar.
- No painel Criar um proxy, em Modelo de proxy, selecione Proxy inverso (mais comum). Um proxy inverso encaminha o tráfego recebido para um serviço de back-end.
- Configure o proxy da seguinte forma:
Nome Valor Nome do proxy helloworld_apikey
Caminho base /helloapikey
O caminho base do projeto faz parte do URL usado para fazer pedidos ao proxy de API.
Descrição hello world protected by API key
Destino (API existente) http://mocktarget.apigee.net
Isto define o URL de destino que o Apigee invoca num pedido ao proxy da API. Este destino devolve apenas uma resposta simples:
Hello, Guest!
. - Clicar em Seguinte.
- Implemente (opcional). Deixe estes campos em branco.
- Clique em Criar.
- O Apigee cria o novo proxy e apresenta o resumo dos detalhes do proxy no painel Resumo do proxy.
IU clássica
- Aceda à IU do Apigee e inicie sessão.
- Selecione a sua organização através do menu pendente no canto superior esquerdo da IU.
-
Clique em Develop > API Proxies para apresentar a lista de proxies de API.
- Clique em Criar novo.
- No assistente Criar um proxy, selecione Proxy inverso (mais comum).
- Configure o proxy da seguinte forma:
Neste campo faça o seguinte Nome do proxy Introduza: helloworld_apikey
Caminho base do projeto Alterar para:
/helloapikey
O caminho base do projeto faz parte do URL usado para fazer pedidos ao proxy da API.
Descrição Introduza: hello world protected by API key
Destino (API existente) Introduza:
http://mocktarget.apigee.net
Isto define o URL de destino que o Apigee invoca num pedido ao proxy da API. Este destino devolve apenas uma resposta simples:
Hello, Guest!
. - Clicar em Seguinte.
- Na página Políticas comuns, selecione Chave da 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 da API.
- Clicar em Seguinte.
- Na página Resumo, certifique-se de que selecionou um ambiente de implementação e clique em Criar e implementar.
- Clique em Editar proxy para apresentar a página de vista geral do proxy de API.
Veja as políticas
Apigee na Cloud Console
- No painel Resumo do proxy para o proxy helloworld_apikey, clique no separador Desenvolver.
- No menu Políticas, clique em Adicionar política.
- No painel Criar política, em Segurança, selecione Validar chave da API.
- No painel Validar chave da API, preencha os campos obrigatórios nas secções
Nome e Nome a apresentar com os seguintes valores:
- Nome: introduza um nome da política. Por exemplo,
VerifyAPIKey
. - Nome a apresentar: introduza o nome da política para utilização na IU. Por exemplo,
Verify API Key
.
- Nome: introduza um nome da política. Por exemplo,
- Clique em Criar.
- Clique em para adicionar outra política.
- No painel Criar política, em Mediação, selecione Atribuir mensagem.
- No painel Atribuir mensagem, preencha os campos obrigatórios nas secções Nome e Nome a apresentar com os seguintes valores:
- Nome: introduza um nome da política. Por exemplo,
AssignMessage
. - Nome a apresentar: introduza o nome da política para utilização na IU. Por exemplo,
Assign Message
.
- Nome: introduza um nome da política. Por exemplo,
- Clique em Criar.
- O elemento
<APIKey>
no código XML abaixo especifica a localização da chave da API no pedido recebido. Por predefinição, a política obtém a chave de um parâmetro de consulta denominadoapikey
no pedido HTTP.<APIKey ref="request.queryparam.apikey" />
O nome
apikey
é arbitrário e pode ser qualquer propriedade que contenha a chave da API. - Atualize os conteúdos da política de Atribuir mensagem para o seguinte:
- Adicione as políticas
VerifyApiKey
eRemove Query Param apikey
.- No menu Pontos finais de proxy, clique em Preflow.
- No painel Pedido do editor visual, clique em Adicionar etapa de política.
- No painel Passo Adicionar política, selecione Validar chave da API.
- Clique em Adicionar.
- No painel Pedido do editor visual, clique em Adicionar etapa de política.
- No painel Adicionar passo de política, selecione Remover apikey de parâmetro de consulta.
- Clique em Adicionar.
- Clique em Guardar.
- Implemente o seu proxy num ambiente:
- Clique em Implementar.
- Selecione uma Revisão e um Ambiente.
- Clique em Implementar.
- Teste as alterações chamando a API conforme descrito em Tente chamar a API.
<AssignMessage async="false" continueOnError="false" enabled="true" name="remove-query-param-apikey"> <DisplayName>Remove Query Param apikey</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
IU clássica
- No editor de proxy de API, clique no separador Desenvolver. Vai ver que foram adicionadas duas políticas ao fluxo de pedidos do proxy de API:
- Validar chave da API: verifica a chamada API para garantir que está presente uma chave da API válida (enviada como um parâmetro de consulta).
- Remover parâmetro de consulta apikey: uma política de atribuição de mensagens que remove a chave da API depois de ser verificada, para que não seja transmitida e exposta desnecessariamente.
-
Clique no ícone da política de verificação da chave da API na vista de fluxo e consulte a configuração XML da política na vista de código inferior. O elemento
<APIKey>
indica à política onde deve procurar a chave da API quando a chamada é feita. Por predefinição, procura a chave como um parâmetro de consulta denominadoapikey
no pedido HTTP:<APIKey ref="request.queryparam.apikey" />
O nome
apikey
é arbitrário e pode ser qualquer propriedade que contenha a chave da API.
Tente chamar a API
Neste passo, vai fazer uma chamada API bem-sucedida diretamente para o serviço de destino e, em seguida, vai fazer uma chamada sem êxito para o proxy API para ver como está a ser protegido pelas políticas.
-
Êxito
Num navegador de Internet, aceda ao seguinte endereço. Este é o serviço de destino para o qual o proxy da API está configurado para encaminhar o pedido, mas vai aceder diretamente a ele por agora:
http://mocktarget.apigee.net
Deve receber esta resposta com êxito:
Hello, Guest!
-
Falha
Agora, experimente chamar o proxy da API:
curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey
onde
YOUR ENV_GROUP_HOSTNAME
é o nome do anfitrião do grupo de ambientes. Consulte Encontre o nome de anfitrião do grupo de ambientes.Sem a política da chave da API Verify, esta chamada daria a mesma resposta que a chamada anterior. No entanto, neste caso, deve 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 não transmitiu uma chave da API válida (como um parâmetro de consulta).
Nos passos seguintes, vai receber a chave da API necessária.
Adicionar um produto de API
Apigee na Cloud Console
Para adicionar um produto de API através da IU do Apigee:
Na Google Cloud consola, aceda à página Distribuição > Produtos API:
- Clique em +Criar.
- Introduza os detalhes do produto para o seu produto de API.
Campo Descrição Nome Nome interno do produto API. Não especifique carateres especiais no nome.
Nota: não pode editar o nome depois de criar o produto da API.Nome a apresentar Nome a apresentar do produto API. O nome a apresentar é usado na IU e pode editá-lo em qualquer altura. Se não for especificado, é usado o valor Name. Este campo é preenchido automaticamente com o valor Nome. Pode editar ou eliminar o respetivo conteúdo. O nome a apresentar pode incluir carateres especiais. Descrição Descrição do produto API. Ambiente Ambientes aos quais o produto API vai permitir o acesso. Por exemplo, test
ouprod
.Acesso Selecione Público. Aprovar automaticamente pedidos de acesso Ativar a aprovação automática de pedidos de chaves para este produto de API a partir de qualquer app. Quota Ignore para este tutorial. Âmbitos do OAuth permitidos Ignore para este tutorial. - Na secção Operações, clique em Adicionar uma operação.
- No campo Proxy de API, selecione o proxy de API que acabou de criar.
- No campo Caminho, introduza "/". Ignore os outros campos.
- Clique em Guardar para guardar a operação.
- Clique em Guardar para guardar o produto API.
Para mais informações sobre como adicionar um produto API, consulte o artigo Crie um produto API.
IU clássica
Para adicionar um produto de API através da IU do Apigee:
- Selecione Publicar > Produtos API.
- Clique em +Criar.
- Introduza os detalhes do produto da API.
Campo Descrição Nome Nome interno do produto API. Não especifique carateres especiais no nome.
Nota: não pode editar o nome depois de criar o produto API.Nome a apresentar Nome a apresentar do produto API. O nome a apresentar é usado na IU e pode editá-lo em qualquer altura. Se não for especificado, é usado o valor do nome. Este campo é preenchido automaticamente com o valor do nome. Pode editar ou eliminar o respetivo conteúdo. O nome a apresentar pode incluir carateres especiais. Descrição Descrição do produto API. Ambiente Ambientes aos quais o produto API vai permitir o acesso. Por exemplo, test
ouprod
.Acesso Selecione Público. Aprovar automaticamente pedidos de acesso Ativar a aprovação automática de pedidos de chaves para este produto de API a partir de qualquer app. Quota Ignore para este tutorial. Âmbitos do OAuth permitidos Ignore para este tutorial. - Na secção Operações, clique em ADICIONAR UMA OPERAÇÃO.
- No campo Proxy de API, selecione o proxy de API que acabou de criar.
- No campo Caminho, introduza "/". Ignore os outros campos.
- Clique em Guardar para guardar a operação.
- Clique em Guardar para guardar o produto API.
Adicione um programador e uma app à sua organização
Em seguida, vamos simular o fluxo de trabalho de um programador que se inscreve para usar as suas APIs. Um programador tem uma ou mais apps que chamam as suas APIs, e cada app recebe uma chave da API única. Isto dá-lhe, ao fornecedor de APIs, um controlo mais detalhado sobre o acesso às suas APIs e relatórios mais detalhados sobre o tráfego de APIs por app.
Crie um programador
Apigee na Cloud Console
Para criar um programador:
-
Na Google Cloud consola, aceda à página Distribuição > Programadores:
- Clique em + Criar.
- Introduza o seguinte na janela Adicionar programador:
Campo Valor Nome próprio Keyser
Apelido Soze
Email keyser@example.com
Nome de utilizador keyser
- Clique em Adicionar.
Para mais informações sobre como criar um programador, consulte o artigo Registar programadores de apps.
IU clássica
Para criar um programador:
- Selecione Publicar > Programadores no menu.
Nota: se ainda estiver no ecrã Desenvolver, clique em "<" junto a DESENVOLVER para apresentar o menu e selecione Publicar > Programadores - Clique em + Programador.
- Introduza o seguinte na janela Novo programador:
Neste campo enter Nome próprio Keyser
Apelido Soze
Nome de utilizador keyser
Email keyser@example.com
- Clique em Criar.
Registe uma app
Apigee na Cloud Console
-
Na Google Cloud consola, aceda à página Distribuição > Apps:
- Clique em + Criar.
- Introduza o seguinte na janela Criar app:
Campo Valor Nome da app Introduza: keyser_app
Nome a apresentar Introduza: keyser_app
Programador Selecionar: Keyser Soze (keyser@example.com)
URL de retorno de chamada Deixe em branco Notes Deixe em branco - Na secção Credenciais, clique em Adicionar credencial.
- Selecione Nunca. As credenciais desta app nunca expiram.
- Clique em Adicionar produtos.
- Selecione o produto que acabou de criar.
- Clique em Adicionar.
- Clique em Criar.
Para mais informações sobre o registo de uma app, consulte o artigo Registar uma app.
IU clássica
Para registar uma app de programador:
- Selecione Publicar > Apps.
- Clique em + App.
- Introduza o seguinte na janela Nova app de programador:
Campo Valor Nome e Nome a apresentar Introduza: keyser_app
Programador Selecionar: Keyser Soze (keyser@example.com)
URL de retorno e Notas Deixe em branco - Na secção Credenciais, selecione Nunca. As credenciais desta app nunca expiram.
- Clique em Adicionar produto.
- Selecione o produto que acabou de criar.
- Clique em Criar.
Obtenha a chave da API
Apigee na Cloud Console
Para obter a chave da API:
Na Google Cloud consola, aceda à página Distribuição > Apps.
- Selecione a app necessária na lista de apps.
- Na página Ver app, em Credenciais, clique em junto ao campo Chave. Repare que a chave está associada ao produto que criou.
- Clique em Copiar. Vai usar esta chave no passo seguinte.
IU clássica
Para obter a chave da API:
- Na página Apps (Publicar > Apps), clique em keyser_app.
- Na página keyser_app, clique em Mostrar junto a Chave na secção
Credenciais. Repare que a chave está associada ao produto que criou.
- Selecione e copie a chave. Vai usá-lo no passo seguinte.
Chame a API com uma chave
Agora que tem uma chave da API, pode usá-la para chamar o proxy da API. Cole a chave da API conforme mostrado, como um parâmetro de consulta. Certifique-se de que não existem espaços adicionais no parâmetro de consulta.
curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=YOUR_API_KEY
Agora, quando chamar o proxy da API, deve receber esta resposta: Hello,
Guest!
Parabéns! Criou um proxy de API e protegeu-o exigindo que uma chave da API válida seja incluída na chamada.
Tenha em atenção que, em geral, não é uma boa prática transmitir uma chave da API como um parâmetro de consulta. Em alternativa, deve considerar transmiti-lo no cabeçalho HTTP.
Prática recomendada: transmitir a chave no cabeçalho HTTP
Neste passo, vai modificar o proxy para procurar a chave API num cabeçalho denominado x-apikey
.
Apigee na Cloud Console
- Na Google Cloud consola, aceda à página Desenvolvimento de proxy > Proxies de API.
- Selecione o proxy necessário na lista de proxies.
- Na página Detalhes do proxy, clique em Desenvolver.
- Modifique o XML da política para indicar à política que procure no cabeçalho e não no parâmetro de consulta:
- Clique em Guardar para guardar as alterações.
- Clique em Implementar.
- Selecione uma Revisão e um Ambiente.
- Clique em Implementar.
-
Faça a seguinte chamada da API com o cURL para transmitir a chave da API como um cabeçalho denominado
x-apikey
. Não se esqueça de substituir o nome da sua organização.curl -v -H "x-apikey: YOUR_API_KEY" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey
<APIKey ref="request.header.x-apikey"/>
Tenha em atenção que, para concluir totalmente a alteração, também tem de configurar a política Assign Message para remover o cabeçalho em vez do parâmetro de consulta. Por exemplo:
<Remove> <Headers> <Header name="x-apikey"/> </Headers> </Remove>
IU clássica
- Edite o proxy da API. Selecione Desenvolver > Proxies de API > helloworld_apikey e aceda à vista Desenvolver.
-
Selecione a política Verificar chave da API e modifique o XML da política para indicar à política que procure no
header
em vez de noqueryparam
:<APIKey ref="request.header.x-apikey"/>
- Guarde o proxy da API e use Implementar para o implementar.
-
Faça a seguinte chamada da API usando cURL para transmitir a chave da API como um cabeçalho denominado
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
Tenha em atenção que, para concluir totalmente a alteração, também tem de configurar a política Assign Message 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
Seguem-se alguns tópicos relacionados com produtos e chaves de API:
- Gerir produtos de API
- Chaves de API
- Registar programadores de apps
- Registe apps e faça a gestão das chaves da API
- Política de validação da chave de API
A proteção de APIs envolve frequentemente segurança adicional, como o OAuth, um protocolo aberto que troca credenciais (como o nome de utilizador e a palavra-passe) por tokens de acesso. Os tokens de acesso são strings longas e aleatórias que podem ser transmitidas através de um pipeline de mensagens, incluindo de app para app, sem comprometer as credenciais originais.
Para uma vista geral dos tópicos relacionados com a segurança, consulte o artigo Proteger um proxy.