Bom dia pessoal, tive uma demanda de um colega e estou começando o desenvolvimento de uma camada de segurança para o acesso à API RESTful do mk-auth. E o melhor, pretendo disponibilizá-la em um projeto Open Source no Github para que vcs possam usar livremente!
Não sei se todos aqui tem o conhecimento em desenvolvimento para Web, mas o nosso colega Pedro Filho com certeza tem! O que tenho em mente é criar um serviço a parte, que possa rodar até mesmo em outro servidor, que dê mais segurança e privacidade aos dados dos clientes do provedor.
Como farei isso? Bom, estou pensando em utilizar um sistema de autenticação OAuth2, ou seja, uma api_key individual para cada cliente, juntamente com o protocolo TSL 1.2 pra criptografar os dados. Pretendo usar a linguagem Python pois ela roda facilmente em qualquer SO e é bastante suportada na comunidade.
Não sou um desenvolvedor Web nato, eu sou programador de firmware e software utilizando C/C++, então se alguém tiver mais alguma ideia pra colaborar ou mesmo quiser ajudar no desenvolvimento, sinta-se à vontade em conversar comigo!
Abraços!
Respostas
legal, ela funciona na 4.109 pois alterei para a key da API ser a senha em uma autenticação HTTP e não mais ser passada na url como anteriormente, mais o chrome não aceita isso no javascript, ocorre um erro, veja como ficou:
http://www.mk-auth.com.br/arquivos/api_teste.zip
Opa, eu desenvolvi para a versão 4.109 mesmo. Pra alterar para funcionar com as versões anteriores é tranquilo também, dá pra otimizar e colocar como parâmetro qual a versão da API que está rodando.
Vou criar uma wiki no GitHub para colocar um exemplo de uso pra ficar mais fácil de visualizar.
Eu usei o Postman pra realizar os testes, lá dá pra passar tranquilamente a autenticação.
Pedro Filho disse:
Ótimo isso acompanhando novidades aqui!
Pessoal, já está disponível uma versão para testes.
https://github.com/bviecelli/mk-auth-api-secure
Qualquer dúvida/sugestão/melhoria vcs podem mandar lá no GitHub mesmo ou pro meu e-mail bviecelli@gmail.com
Se alguém aqui for desenvolvedor e quiser contribuir com o código, fique à vontade!
Abraços
Pedro como retorno os dados de ramais na API ?
Você quer listar os ramais de um cliente ou quer todos os ramais?
Nos detalhes do cliente vc consegue pegar o ramal dele.
Creio que não tenha como listar todos os ramais pela API.
João Luiz disse:
verdade, tem muita coisa para colocar mais estou muito sem tempo, mais João cria o arquivo joao.api.class.php e coloca ele dentro de /opt/mk-auth/api/ amigo com o conteúdo que irei colar abaixo e depois para acessar usa a url´s:
http://api:keyapiqueficanosdadosdaempresa@172.31.255.2/api/joao/listALL
para pegar todos ramais.
http://api:keyapiqueficanosdadosdaempresa@172.31.255.2/api/joao/list/172.31.255.1
para pegar um pelo ip de um ramal que no exemplo é 172.31.255.1 amigo.
e Bruno obrigado pela ajuda, é incrível o que vc criou amigo...
Bruno Viecelli disse:
Conteúdo do arquivo joao.api.class.php
<?php
class joao {
function get_listAll() {
$queryAPI = "SELECT id, nasname, shortname, secret FROM nas";
$statement = DB::prepare($queryAPI);
$statement -> execute();
$row_rsAPI = $statement -> fetchAll();
$totalRows = count($row_rsAPI);
if ($totalRows == 0) {
echo json_encode('NULL');
exit();
}
echo "{\"JoaoRamais\":";
echo json_encode($row_rsAPI);
echo "}";
}
function get_list($valor) {
$queryAPI = "SELECT * FROM nas WHERE nasname = :nasname LIMIT 1";
$statement = DB::prepare($queryAPI);
$statement -> bindParam('nasname', $valor);
$statement -> execute();
$row_rsAPI = $statement -> fetch();
$totalRows = count($row_rsAPI);
if ($totalRows == 0) {
echo json_encode('NULL');
exit();
}
echo json_encode($row_rsAPI);
}
}
?>
joao.api.class.php
Por nada, isso vai facilitar a vida de um amigo que usa seu software pois ele precisa de um APP Android pra fornecer pros clientes dele, e com essa API eu deixo o ambiente dele seguro e consigo desenvolver o aplicativo pra ele.
:)
Também daria pra usar a base da API para o cliente final pra desenvolver uma outra pra administração. Não seria muito complicado.
Pedro Filho disse:
funcionou, obrigado pedro.
Pedro Filho disse: