SensediaSensediaSensediaSensedia
  • Products
    • API Management Platform
    • Governança de APIs
    • Event-Driven Architecture
    • Microservices & Service Mesh Architecture
    • PCI
    • Flexible Actions
  • Services
    • Consulting & Professional Services
    • API Care
    • Developer Experience
  • Solutions
    • Insurance
    • Open Banking
    • Retail & e-commerce
  • Content
    • Webinar e Ebooks
    • Blog
    • Cases
  • Contact
    • Customers
    • Support
  • Careers
  • Português
    • Inglês
    • Espanhol

APIs para dispositivos IoT

    Home API APIs para dispositivos IoT

    APIs para dispositivos IoT

    By Lucas Tempestini | API | 0 comment | 17 maio, 2017 | 0

    *texto colaboração de Daniela Marques – Sensedia

    A popularização de hardwares de prototipagem como Arduino e Raspberry Pi baratearam o custo de desenvolvimento de sistemas embarcados e dispositivos IoT, o que possibilitou qualquer pessoa desenvolver seu próprio sistema inteligente, como automação residencial, controle de sensores, robôs etc., com muita facilidade.

    O boom do IoT é recente e diferentemente de sistemas convencionais, nesses dispositivos há a preocupação de consumo de energia e banda, limitação de memória etc. e ainda há pouca discussão sobre modelagens e arquiteturas que permitam evoluir de forma ágil, segura e escalável essas aplicações no mundo IoT, sendo comum casos de vulnerabilidades em sistemas críticos como equipamentos de vigilância, sensores e até mesmo monitor cardíaco de bebês. É essencial durante o desenvolvimento preocupar-se com essas questões e uma API REST pode ser uma solução ideal.

    If you’re afraid to change something it is clearly poorly designed. – Martin Fowler

    Ao utilizar REST, há uma flexibilidade maior de incrementar novas features, facilidade de expor o sistema para diferentes plataformas (os clientes podem ser apps, outros dispositivos IoT, navegadores etc), se utilizado corretamente reduzirá a complexidade do sistema, permite inserir um API Management para solucionar problemas de segurança, throttling, validar acessos etc. e imagine as inúmeras possibilidades de expôr uma API de um dispositivo IoT.
    APIs para dispositivos IoT

    Há algumas diferenças importantes para implementação de APIs para sistemas comuns e para dispositivos IoT.

    MQTT vs HTTP vs CoAP

    É comum cenários em que o consumo de banda e energia do dispositivo é limitado, seja por limitações de hardware ou por possuir processos críticos que são mais prioritários. Para esses casos, existem protocolos que são mais eficientes que o HTTP como o MQTT e o CoAP, os quais também permitem utilizar JSON.

    O MQTT é orientado a mensagens e funciona como um modelo cliente/servidor porém o servidor é denominado broker. Cada dispositivo, sistema ou sensor pode ser um cliente e se inscrever num tópico:

    /sensors/{sensorId}/temperature 

    Suponha que o A, B são clientes inscritos neste tópico e C publica um novo valor de temperatura nesse tópico. Os clientes A, B receberão a notificação do novo valor adicionado sem a necessidade de fazer nenhuma requisição e consequentemente poupando processamento e energia. Em MQTT as únicas ações disponíveis são publish, subscribe e unscribe diferentemente dos verbos HTTP.

     

    O CoAP por sua vez possibilita o uso dos verbos já conhecidos como GET, PUT, PATCH e DELETE porém utiliza o protocolo UDP ao invés de TCP/IP. O modelo é exatamente cliente/servidor, onde o cliente realiza requisições para algum recurso e servidor retorna as responses. A grande vantagem em relação ao fluxo HTTP TCP/IP comum é o fato de seus pacotes serem menores, o que poupa os recursos do device.

    O projeto Eclipse Ponte permite que seja possível a mesma aplicação e devolver e receber respostas em HTTP, MQTT ou CoAP.

    OAuth 2.0

    O OAuth 2.0 é uma solução para autenticação e autorização que promove acesso aos recursos somente para devices/clientes autorizados.

    O fluxo funciona com Resource Owner, Resource Server, Authorization Server, OAuth Server e o Client. Para acessar um determinado recurso, os seguintes passos ocorrem resumidamente:
    1) O Client deve contatar o Authorization Server com seu respectivo username e password
    2) O Authorization Server verifica com o Authentication Server se os dados passados pelo Client estão corretos
    3) Caso estejam corretos, o Authorization Server permite o Client acessar o determinado recurso em posse do access_token

    Toda a comunicação envolvida no processo do OAuth 2.0 necessita de TLS (Segurança da Camada de Transporte) para ter certeza de que aquele client é mesmo quem diz ser e encriptar a comunicação. Porém com dispositivos IoT, temos limitações que não permitem o device estar todo o tempo online, preocupar-se com bateria, realizar operações complexas com pouco hardware etc.

    Para utilizar OAuth 2.0 em IoT independente de TLS, é necessário usar o fluxo denominado Proof of Possession.
    1) O processo inicia normalmente com o Client contatando o Authorization Server com seu respectivo username e password, o Authorization Server verifica com o Authentication Server se os dados passados pelo Client estão corretos. Caso esteja, um código de autorização é retornado para o Client.

    Esse código de autorização retornado serve somente para provar que aquele Client é quem diz ser e não permite acessar nenhum recurso.

    2) O próprio Client gera uma key forte o suficiente para não ser quebrada
    3) O Client transmite a key gerada anteriormente para o Authorization Server juntamente com o authorization code e informando quais recursos deseja acessar. Neste passo, o Authorization Server sabe que aquele authorization code gerado está ligada a uma determinada key e retorna um access_token para o Client
    4) O Client em posse do access_token acessa um determinado recurso. O dono do recurso verifica com o Authorization Server qual é a key daquele determinado access_token, o acesso é permitido somente se o access_token transmitido bate com a determinada key.

    E no caso em que o dono do recurso está offline e não pode verificar com o Authorization Server aquele Client?

     

    Neste caso, é possível realizar a validação através de um JWT. Os passos ocorrem normalmente mas ao invés do Authorization Server retornar um access_token, é retornado um JWT. Através do JWT o dono do recurso consegue validar aquele Client sem a necessidade de se comunicar com o Authorization Server.

    Para ler um pouco mais sobre tokens em OAauth 2.0, leia Como verificar se um Token OAuth é valido

    Cool things

    MBED Device Connector

    O mbed Device Connector é um serviço desenvolvido para conectar placas baseadas no ARM Cortex-M na nuvem através de APIs sem configurar nenhum ambiente de infraestrutura e gratuito, suporta CoAP/HTTP, utiliza JSON e é ideal para prototipação mas limita a quantidade de requisições por dia e pode não ser tão personalizável de acordo com as necessidades.

    Pingo

    O Pingo é uma API feita totalmente em Python que possibilita a portabilidade de código para placas que possuem diferentes hardwares evitando o retrabalho, na prática o Pingo permite que o mesmo código que é executado num Arduino Yún seja executado numa BeagleBone Black, pcDuino etc. Atualmente o Pingo suporta Raspberry Pi, Arduino Yún, Arduino Firmata, BeagleBone Black, Intel Galileo, pcDuino e SECO UDOO.

    Amazon e Azure IoT Hubs

    As principais plataformas que oferecem serviços na nuvem já disponibilizam serviços específicos para IoT, os quais em geral permitem a autenticação do device, disponibilizam um Gateway para gerenciar a latência, segurança e análise de usos e possuem SDKs disponíveis para conectar cada device a nuvem.

    Referências

    https://medium.com/@AlexandraBowen/iot-is-eating-the-world-apis-and-rest-9e0321bc6cbf
    https://medium.com/@AlexandraBowen/iot-is-eating-the-world-future-of-iot-a001dc263f08
    https://dzone.com/articles/json-http-and-the-future-of-iot-protocols
    https://nordicapis.com/why-oauth-2-0-is-vital-to-iot-security/

    No tags.

    Lucas Tempestini

    Graduated in Marketing and Advertising at PUC-Campinas, became specialist in B2B Marketing at Unicamp, crazy about internet and technology, enthusiat of great guitar players and BJJ purple belt! :)

    More posts by Lucas Tempestini

    Related Post

    • Evolução de Componentes e Serviços

      By Marcilio Oliveira | 5 comments

      Quantos de vocês já passaram por este cenário? Um departamento da empresa solicita recursos para a criação de um novo componente de software (ou um serviço técnico). A justificativa é a padronização da forma deRead more

    • Atualmente quando o assunto é Big Data, um tema que é tratado praticamente como sinônimo é o Hadoop. Conheça esse framework em detalhes.

      Introdução ao Hadoop

      By adm | 2 comments

      Introdução ao Hadoop Atualmente quando o assunto é Big Data, um tema que é tratado praticamente como sinônimo é o Hadoop, mas que fique claro que podemos ter Big Data sem Hadoop, assim como, HadoopRead more

    • APIs: oportunidade para a TI inovar

      By adm | 0 comment

      Artigo de Kleber Bacili na Computer World Magazine de Maio. Página 20-21Read more

    • SOA e APIs: O que muda e o que segue!

      By Marcilio Oliveira | 0 comment

      Confira a apresentação realizada pelo COO da Sensedia, Marcilio Oliveira, no Workshop “SOA e APIs: O que muda e o que segue!”, em Junho de 2013, no Rio de Janeiro. SOA e APIs: O queRead more

    • Prêmio efinance 2013: Case Governança de Ativos Bradesco Seguros

      By adm | 0 comment

      Na noite de ontem, 17 de Junho de 2013, foi divulgado o resultado do XIII Prêmio efinance, coordenado pela revista Executivos Financeiros. “A premiação, da revista Executivos Financeiros, teve mais de 400 cases inscritos eRead more

    • [PALESTRA] APIs Mobile: como construir?

      By adm | 0 comment

      Facebook, Google+, Twitter, Linkedin, Flickr, Evernote, Netflix, Amazon, eBay, Extra.com & Mercado Livre. Todos eles possuem Apps sensacionais suportados por excelentes APIs. Essa apresentação cobre a importância de expor e gerenciar APIs para projetos Mobile,Read more

    • Amazon.com e a nova forma de monetizar Apps mobile

      By adm | 1 comment

      Publicada em 18 de Outubro de 2013 às 14:33 na Computer World A Amazon anunciou recentemente a “Mobile Associates API”. Com ela, os desenvolvedores poderão comercializar produtos físicos e digitais da Amazon.com diretamente de dentroRead more

    • APIs bem inusitadas: Análise genética, Atividade física e Culinária

      By adm | 1 comment

        Publicada em 01 de Setembro de 2013 às 15:30 na Computer World Entre os dias 23 e 25 de outubro, São Francisco sediou a segunda edição do evento “API Strategy & Practice”, totalmente focadoRead more

    Leave a Comment

    Cancelar resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    Categorias

    • Analytics
    • API
    • Artigos
    • Eventos
    • Internet das Coisas
    • Negócios Digitais
    • Podcast Techbeer
    • Publicações externas
    • SOA

    Tags

    API API Economy API Experience API First API Management APIs APIX As APIs que você precisa conhecer Big Data Blocos Blocos de Construção Desenvolvedores desenvolvimento design de APIs digital transformation e-commerce Ecossistema de parceiros Estratégia API First Estratégia Digital Estratégias SaaS Eventos Exposição de APIs Forrester Games Gartner Gerenciamento de APIs Hackathon Inovação Integração Internet das Coisas Internet of Things IoT MicroServices midia Modelo de negócios Negócios Omnichannel open banking SaaS Segurança Segurança de APIs SOA Techbeer Tecnologia Transformação Digital

    Posts recentes

    • Como o Developer Experience pode ajudar a suportar suas APIs
    • APIs e o novo paradigma da Educação Digital
    • Apache Ignite – Cache – Pt 1
    • Integração de gás com as APIs ganhando espaço
    • Pós Black Friday – A experiência da Via Varejo
    • Política de Privacidade
    Copyright © 2020 Sensedia | All Rights Reserved
    • Products
      • API Management Platform
      • Governança de APIs
      • Event-Driven Architecture
      • Microservices & Service Mesh Architecture
      • PCI
      • Flexible Actions
    • Services
      • Consulting & Professional Services
      • API Care
      • Developer Experience
    • Solutions
      • Insurance
      • Open Banking
      • Retail & e-commerce
    • Content
      • Webinar e Ebooks
      • Blog
      • Cases
    • Contact
      • Customers
      • Support
    • Careers
    • Português
      • Inglês
      • Espanhol
    Sensedia