Segurança – O que é uma API KEY? – api segurança api-key

Pergunta:


Estou vendo esta palavra em quase todas as aplicações de serviços..

O quê realmente é uma API KEY e quais são os seus usos?

Como ela realmente funciona?

Também por favor, se possível, explicar a diferença entre API KEYs públicas e privadas.

Autor da pergunta Maurício Krüger

OnoSendai

API Keys são credenciais de acesso fornecidas de maneira a autorizar o uso de funcionalidades específicas de uma API. Existem vários tipos de implementações.

O sentido de chave de API pública ou privada também depende da implementação. Por exemplo, você pode possuir uma chave pública emitida para seu cliente (digamos www.app.com) que permite o acesso a uma API específica (api.servico.com), que é então utilizada pelo seu browser. Entretanto chamadas de servidor para servidor utilizam uma outra chave, privada, para operações mais sensitivas como autenticação e validação de credenciais.

API

Basicamente uma API é um conjunto de rotinas e padrões de programação para acesso a uma aplicação de software ou plataforma baseado na Web. A sigla API refere-se ao termo em inglês “Application Programming Interface” que significa “Interface de Programação de Aplicativos” traduzindo para o português.

Geralmente API é desenvolvida quando uma empresa de software tem a intenção de que outros criadores de software desenvolvam produtos associados ao seu serviço. Existem várias empreas que disponibilizam seus códigos e instruções para serem usados em outros sites da maneira mais conveniente para seus usuários. Existe o Youtube, Google Maps, Facebook, Twitter; que são grandes exemplos na área de APIs. Por meio de seu código original, muitos outros sites e aplicações utilizam os dados adaptando-o da melhor forma a fim de utilizar esses serviços.

Porque expor os dados?

Por alguns motivos específicos, expor certos dados e recursos é uma estratégia de negócios e inovação muito bem pensada. É importante pensar em alguns motivos para essa exposição de dados. Mantenha esses aspectos em mente:

  • Integrar sua plataforma à parceiros;
    Gerar inovação sobre seus próprios dados, de uma maneira que não poderia sozinho;
  • Gerar desenvolvimento de sua própria plataforma em novos meios;
    Gerar mais mercado e expandir o público-alvo;
  • Organização do setor de TI, em que os consumidores das APIs são as outras equipes internas da empresa, e as APIs expostas funcionam como portais de troca de dados entre setores.
  • Portanto, a API é uma interface para os ativos (dados) da empresa, mas que ao mesmo tempo barra usos abusivos desses ativos.

Key

Da tradução livre do inglês, “Chave”. Referênte ao significado do português temos, que é utensílio de metal que se introduz na fechadura à qual pertence para movimentar a lingueta, e que possibilita abrir ou cerrar portas, tampas, cadeados etc.

Considerando isso, a API KEY, esta muitas vezes atua como um identificador único e uma chave secreta para autenticação, e geralmente têm um conjunto de direitos de acesso à API associada a ele. Uma API KEY pode ser baseado no sistema UUID é a sigla em ingês para Universally unique identifier, que traduzindo para o português fica Identificador Único Universal, para garantir que será única para cada utilizador. É bem simples de compreender pois o nome auto-explicativo, mas o conceito do UUID é algo mais complexo e muito funcional.

No caso do Google Map, a sua ‘API KEY’ é baseada em um formulário curto do certificado digital do seu aplicativo, conhecido como impressão digital SHA-1. Para exibir a impressão digital SHA-1 do seu certificado, primeiro certifique-se de estar usando o certificado correto, sendo um certificado de depuração e de publicação.

Mantenha sua chave secreta e tokens de acesso privados. Você pode
compartilhá-los com um agente que está operando em seu aplicativo, se
ele assinar um acordo de confidencialidade.

A API KEY do Facebook é uma seqüência de números gerados aleatoriamente que cria cada vez que uma pessoa registrar seu aplicativo através do site. Sempre totalmente numérica na natureza e é composto por 15 caracteres. Mas é somente para este caso, pois cada empresa tem sua política para criação das chaves, sendo numéricas, apenas letras, etc.

Chaves de API permitem gerar uma credencial de autenticação que é separado do seu nome de usuário e senha em alguns casos. Deve-se criar chaves de API exclusivas para cada uma de suas aplicações ou servidores de modo que possa facilmente revogá-las sem interromper outros sistemas, se necessário.

Mais detalhes

Essa é uma pergunta muito ampla…

A função exata de uma API key depende bastante da entidade que a gerou e com qual intuito.

Geralmente, uma API KEY é o nome que se dá para uma token secreto que é enviado dentro de uma request para um webservice, de forma a identificar e muitas vezes autenticar o usuário que está chamando o serviço.

A chave também pode ser incluída como parte de uma assinatura da request inteira de forma a verificar o seu conteúdo e prevenir ataques como replay e man-in-the-middle

Além disso, nos casos em que você precisa autenticar o usuário antes que ele possa acessar um recurso de seu webservice, há uma grande vantagem de se usar uma API KEY. Esse tipo de chave/token viabiliza uma forma de autenticação stateless em que você não precisa criar sessões, fazer uso de cookies ou qualquer outro estado condicional/temporário que exigiriam chamadas adicionais e mecanismos de controle de sessão.

Por outro lado, se você tem um par de chaves (pública e privada) então estamos falando de alguma forma de criptografia assimétrica. As técnicas que envolvem esse tipo de criptografia são mais complexas e mais seguras para identificar positivamente a origem e a autenticidade de uma mensagem, ao mesmo tempo que a protege de alterações.

API Keys, como já foi dito, são credenciais de acesso fornecidas de maneira a autorizar o uso de funcionalidades específicas de uma API e são usadas ​​para monitorar e controlar a forma como a API está sendo utilizada, por exemplo, para evitar o uso indevido ou abuso do API.

API Keys permitem gerar uma credencial de autenticação que é separado do seu nome de usuário e senha. Eles são independentes um do outro e são facilmente descartáveis. Você deve criar única API Key para cada um de seus aplicativos ou servidores de modo que você pode facilmente revogá-las sem interromper outros sistemas, se necessário.

Nesse site, em inglês, mostra as top 6 razões para usar uma API key e como usá-las.

API pública, como o próprio nome diz, esta chave é pública e pode ser visto por qualquer pessoa, que não compromete a segurança das informações. Já a privada deve ser mantida completamente privada e segura, pois com ela podem ser feitas consultas que comprometem a segurança. Depende da implementação.

Referências:

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *