Sugestao de acesso a API
[Finalizado Pelo Aluno]
Ola Carlos,
Pretendo criar uma api em laravel que ira alimentar um site.
Notei em algumas api's de outras empresas que utlizam uma CHAVE fixa na URL e tambem um token FIXO no headers. Isso para evitar o acesso a API diretamente. Entretanto, notei que e possivel identificar todos os elementos presentes no headers no console do NAVEGADOR CHROME em "Ferramentas dosenvolvedor"
Existe alguma forma de usar um token FIXO sem exibi-lo no console do navegador?
Grato!
Olá, Roberto!
Tudo bem?
Vou te mostrar um cenário comum:
Você tem uma API, privada, em Laravel.
O client para acessar essa API, primeiramente precisa informar suas credenciais, como usuário e senha.
O client envia essas credenciais para o server, o server devolve um token, uma chave de acesso.
Agora, o client com posse dessa chave ele pode acessar os recursos privados da API que ele tem acesso. Mas, por que ele pode acessar? Porque ele já provou sua autenticidade.
Ah, mas toda vez que envio a request consigo ver o token no header da request (Authorization: Bearer {token}). Isso não é um problema, porque o usuário já provou que a chave realmente lhe pertence, porque ele já validou o seu acesso, e não tem como esconder e nem o porque. O que é super recomendado nesse caso, é trabalhar com https, porque assim os dados navegam de forma criptografada, de ponta a ponta. Ainda que exista algum malware na rede, os dados estarão viajando de forma criptografada, logo, estão protegidos.
Fui claro amigo? 🙂
A situaçāo é diferente.
Nao ha autenticao de usuario. A API e aberta porem precisa ter 2 credenciais fixas.
Uma na URL e outra no Header
Tem ate um banco que faz isso.
Veja a url https://api.pjbank.com.br/recebimentos/{{credencial-boleto}}
No caso a credencial do boleto e uma chave FIXA
E no Header vai outra chave FIXA chamada X-CHAVE
Ambas eu consigo visualizar no console do Navegador.
O que eu gostaria de saber se existe alguma forma de nao exibir no console do navegador uma credencial.
Entedeu agora?
Reformulando a pergunta para voce entender melhor:
O site minhaloja.com.br consome uma api.
Eu quero saber se e possivel evitar o acesso da API quando uma pessoa usa o POSTMAN ou outro semenlhante.
Mas, essa credencial é fixa para todos os clientes? Se for, não tem o porque esconder.
De qualquer forma, a resposta é a mesma, não é possível ocultar isso, a forma mais tradicional é enviar essa chave no header da request, assim fica menos esposto, e trabalhar com SSL (https).
---
Se você enviar a request pelo backend (usando um Guzzle por exemplo), estes dados não estarão espostos.
A credencial e FiXA conforme eu informei e cada cliente tem a sua chave.
Mas fica a pergunta:
E possivel evitar o acesso de uma API sem credenciamento quando uma pessoa usa o POSTMAN ou outro semenlhante?
Como o client recebe essa chave do server?
--
Sobre a sua pergunta, sim, é possível evitar o acesso a API, você pode controlar quem está requisitando (até mesmo o IP do client), pode CORS para limitar os clients que terão acesso a API.
Tem o CORS.... Nao tinha pensado nisso.
Voce tem algum curso de CORS?
Que aborde com profundidade, não.
Mas, o segredo está em configurar no arquivo config/cors.php
Entendi. Vou pesquisar a respeito.
Obrigado!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!