Case study

API de Armazenamento integrada ao OneDrive

API REST desenvolvida em Java e Spring Boot para utilizar o Microsoft OneDrive como camada de armazenamento de arquivos. A solução integra Microsoft Graph e OAuth 2.0, oferecendo upload, consulta, download por streaming e exclusão de arquivos, além de gerenciamento automático de access e refresh tokens.

jul. de 2026jul. de 2026
onedrive-api

Tecnologias

JavaSpring BootMicrosoft Graph APIOAuth2OneDriveSwagger / OpenAPI

O problema

Aplicações que precisam armazenar e disponibilizar arquivos normalmente dependem de um serviço específico de object storage ou precisam implementar sua própria infraestrutura de armazenamento. O objetivo deste projeto foi utilizar uma conta do OneDrive como backend de armazenamento, expondo uma API própria que abstraísse a complexidade de autenticação OAuth, Microsoft Graph, gerenciamento dos tokens e manipulação dos arquivos.

A solução

Foi desenvolvida uma API REST utilizando Java e Spring Boot que atua como uma camada intermediária entre aplicações consumidoras e o Microsoft OneDrive. A aplicação realiza autenticação com a Microsoft utilizando OAuth 2.0 e mantém os tokens necessários para acessar o Microsoft Graph. Quando o access token expira, o sistema utiliza automaticamente o refresh token para obter uma nova credencial sem necessidade de nova autenticação manual. A API fornece endpoints para upload, consulta de metadados, exclusão e download de arquivos. Os caminhos informados pelos clientes são normalizados antes das operações para manter os arquivos dentro da estrutura de armazenamento configurada. No fluxo de download, os arquivos são entregues através de streaming, permitindo transferir o conteúdo diretamente entre o OneDrive e o cliente sem carregar todo o arquivo na memória da aplicação.

Responsabilidades

Responsável pela arquitetura e implementação da API, integração com Microsoft Graph, implementação do fluxo OAuth 2.0, gerenciamento e renovação dos tokens de acesso e desenvolvimento dos endpoints de armazenamento. Também fui responsável pelo tratamento de uploads multipart, normalização dos caminhos, streaming dos downloads, validação das respostas e redirects retornados pela Microsoft, tratamento global de erros e documentação dos endpoints utilizando OpenAPI.

Decisões técnicas

Java 17 e Spring Boot foram utilizados para construir uma API REST fortemente tipada e organizada em controllers, services, clients, configurações e DTOs. A comunicação com Microsoft Graph foi encapsulada em um cliente próprio, evitando acoplar detalhes da API externa diretamente aos controllers. OAuth 2.0 foi utilizado para autorizar o acesso ao OneDrive com os escopos necessários. O refresh token é persistido e utilizado automaticamente quando o access token expira. A aplicação utiliza streaming para downloads, evitando manter o conteúdo completo de arquivos em memória e tornando a solução mais adequada para arquivos maiores. Os caminhos são normalizados antes das operações e resolvidos dentro de uma pasta raiz configurada para reduzir o risco de acessos inesperados. As respostas de redirect do Microsoft Graph são tratadas manualmente, com validação da URI antes de acessar a URL temporária fornecida pelo serviço. OpenAPI foi utilizado para documentar a API, e operações sensíveis de escrita possuem uma camada adicional de proteção baseada em API Key.

Resultados

O projeto resultou em uma camada de armazenamento reutilizável que permite que outras aplicações trabalhem com arquivos no OneDrive através de uma API REST própria, sem precisar conhecer diretamente os detalhes do Microsoft Graph ou do fluxo OAuth. A solução suporta upload, leitura de metadados, exclusão e download por streaming, além de renovar automaticamente credenciais expiradas. O projeto também consolidou conhecimentos em integração com APIs de terceiros, OAuth 2.0, manipulação de arquivos, streaming HTTP e arquitetura de APIs utilizando Java e Spring Boot.