O que é uma chave de API? [fechadas]

109

Vejo essa palavra em quase todos os aplicativos de serviço cruzado atualmente.

O que exatamente é uma chave de API e quais são seus usos?

Além disso, qual é a diferença entre as chaves de API públicas e privadas.

OrangeRind
fonte

Respostas:

111

Para que "exatamente" uma chave de API é usada, depende muito de quem a emite e para quais serviços ela está sendo usada. Em geral, no entanto, uma chave de API é o nome dado a alguma forma de token secreto que é enviado junto com solicitações de serviço da web (ou semelhantes) para identificar a origem da solicitação. A chave pode ser incluída em algum resumo do conteúdo da solicitação para verificar ainda mais a origem e evitar adulteração dos valores.

Normalmente, se você puder identificar a origem de uma solicitação positivamente, ela atua como uma forma de autenticação, que pode levar ao controle de acesso. Por exemplo, você pode restringir o acesso a certas ações da API com base em quem está executando a solicitação. Para empresas que ganham dinheiro com a venda desses serviços, é também uma forma de rastrear quem está usando o produto para fins de faturamento. Além disso, ao bloquear uma chave, você pode evitar parcialmente o abuso no caso de volumes de solicitação muito altos.

Em geral, se você tiver uma chave de API pública e uma privada, isso sugere que as próprias chaves são um par de chaves pública / privada tradicional usado em alguma forma de criptografia assimétrica ou assinatura digital relacionada. Essas são técnicas mais seguras para identificar positivamente a origem de uma solicitação e, além disso, para proteger o conteúdo da solicitação de espionagem (além de adulteração).

Roubar
fonte
12
Bem colocado! No entanto, em minha experiência um tanto limitada, a distinção público / privado não tem nada a ver com criptografia de chave pública. As chaves "públicas" que vi são normalmente "access light" - em outras palavras, uma chave que você pode distribuir para conceder a terceiros acesso a dados não confidenciais, sem entregar as chaves do reino.
timdev
2
@Rob +1 para a resposta detalhada @tim +1 para a reflexão posterior!
OrangeRind
@tim - concordou. Acho que a abordagem mais comum que vi é ter uma chave de resumo privada.
Rob
24

De maneira muito geral:

Uma chave de API simplesmente identifica você.

Se houver uma distinção público / privado, então a chave pública é aquela que você pode distribuir para outras pessoas, para permitir que elas obtenham algum subconjunto de informações sobre você da API. A chave privada é apenas para seu uso e fornece acesso a todos os seus dados.

timdev
fonte
na maioria das vezes, eles se parecem com hashes. minha observação está correta?
OrangeRind
Eles podem ser gerados da maneira que você quiser, desde que sejam exclusivos. Um hash de alguns dados parece uma maneira razoável de gerar um, sim.
Matthew Scharley,
Sim, eles se parecem com hashes. Afinal, você não quer que sejam fáceis de adivinhar.
timdev
1
Mais ou menos - a maioria das chaves de API padrão bog são geradas por hash de algum valor pseudo-aleatório e executando alguma codificação de texto simples padrão no resultado, por exemplo, base16, base64 etc.
Rob
18

Parece que muitas pessoas usam chaves de API como solução de segurança. O ponto principal é: nunca trate as chaves de API como secretas , não é. Seja https ou não, quem ler a solicitação poderá ver a chave da API e fazer a chamada que desejar. Uma chave de API deve ser apenas um identificador de 'usuário', pois não é uma solução de segurança completa, mesmo quando usada com SSL.

A melhor descrição está no link de Eugene Osovetsky para: Ao trabalhar com a maioria das APIs, por que elas exigem dois tipos de autenticação, ou seja, uma chave e um segredo? Ou verifique http://nordicapis.com/why-api-keys-are-not-enough/

tempo e oceano
fonte
2
Como você pode ver, esta é uma questão antiga e provavelmente pode ser considerada "muito ampla" (ou talvez "fora do tópico") de acordo com os padrões modernos do Stack Overflow. Essas perguntas tendem a atrair respostas opinativas, que geralmente são rejeitadas e / ou excluídas. Ficar longe dessas questões é geralmente o melhor curso de ação. Você pode dar uma olhada na Central de Ajuda para mais informações.
Dev-iL
10

Uma chave de API é um valor exclusivo atribuído a um usuário desse serviço quando ele é aceito como usuário do serviço.

O serviço mantém todas as chaves emitidas e as verifica a cada solicitação.

Observando a chave fornecida na solicitação, um serviço verifica se é uma chave válida para decidir se concede acesso a um usuário ou não.


fonte
então o que acontece com o público e o privado?
OrangeRind,
1
As chaves públicas e privadas vêm do domínio da criptografia e têm algo a ver com a criptografia assimétrica. Nunca ouvi esses termos usados ​​no sentido de chaves de API.
2

As chaves de API são apenas uma forma de autenticar usuários de serviços da web.

GG.
fonte
1

Pense nisso desta forma, a "Chave de API pública" é semelhante a um nome de usuário que seu banco de dados está usando como um login para um servidor de verificação. A "Chave de API privada" seria então semelhante à senha. Pelo site / banco de dados usando este método, a segurança é mantida no servidor de verificação / terceiros para autenticar a solicitação de postagem ou edição do seu site / banco de dados.

A string da API é apenas o URL do login para seu site / banco de dados entrar em contato com o servidor de verificação.

Eugene Grant-Sinclair
fonte