Camada de segurança para acesso à API

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!

Para adicionar comentários, você deve ser membro de MK-AUTH.

Join MK-AUTH

Votos 0
Enviar-me um email quando as pessoas responderem –

Respostas

  • Olá Pedro,

    legal esse exemplo, estou usando para colocar alguns recursos adicionas na API, conseguir fazer funcionar na versão 18, porém na versão 4.102 não tem a instância do PDO através da constante DB

    Na versão 4.x, qual a forma de acessar a instância PDO?

    Obrigado!

    Pedro Filho 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);
    }

    }

    ?>

  • Baixei o zip porem nao tenho muito conhecimento em programação queria saber como fazer para funcionar!

  • gostei desse modelo como faço pra usar?

    Pedro Filho disse:

    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

  • Não precisa criar as pastas, não funciona igual essa api existente pois não foi feita em php. Vc só precisa seguir a instalação que está na página do github pra testar...
  • A pasta que foi criada com as paginas eu coloco na raiz do mk-auth em que pastas para funcionar? o php eu achei e ja inclui corretamente no api!

     
    Bruno Viecelli disse:

    Messias, a diferença dessa API é que ela utiliza cookies para manter a sessão, não envia a senha do cliente na resposta e vc pode rodar ela em um ambiente separado do servidor MK-AUTH e colocar SSL para aumentar a segurança e assim poder distribuir um aplicativo de celular para seu cliente consultar consumo e detalhes da conta dele, por exemplo...

    Qualquer dúvida é só me contactar. Abraço

    Messias Batista disse:

    Acompanhando, ainda estou tentado entender esta api!

  • Messias, a diferença dessa API é que ela utiliza cookies para manter a sessão, não envia a senha do cliente na resposta e vc pode rodar ela em um ambiente separado do servidor MK-AUTH e colocar SSL para aumentar a segurança e assim poder distribuir um aplicativo de celular para seu cliente consultar consumo e detalhes da conta dele, por exemplo...

    Qualquer dúvida é só me contactar. Abraço

    Messias Batista disse:

    Acompanhando, ainda estou tentado entender esta api!

  • Acompanhando, ainda estou tentado entender esta api!

  • vlw o feedback e muito legal o trabalho do Bruno...

    João Luiz disse:

    funcionou, obrigado pedro.

  • funcionou, obrigado pedro.

    Pedro Filho 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);
    }

    }

    ?>

  • 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:

    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..

This reply was deleted.