O SafeScribe é uma API RESTful desenvolvida em .NET 8, com foco em autenticação e autorização via JWT (JSON Web Token).
A aplicação permite o registro, login e gerenciamento de notas de forma segura, aplicando controle de acesso baseado em funções (roles): Leitor, Editor e Admin.
- 🚀 Funcionalidades
- 💻 Tecnologias
- 📋 Pré-requisitos
- 🔧 Instalação
- 🏃 Execução
- 📘 Documentação da API
- 🔗 Endpoints
- 🗂 Estrutura do Projeto
- 🚧 Status da Aplicação
- 👥 Autores
- Registro e login de usuários com hash seguro de senha (BCrypt).
- Geração de tokens JWT contendo claims (UserId, Role, Jti).
- Controle de acesso por função:
- Leitor: visualiza apenas suas notas.
- Editor: cria e edita suas próprias notas.
- Admin: controla todas as notas e usuários.
- Criação, leitura, atualização e exclusão de notas.
- Segurança aplicada a cada operação conforme o perfil do usuário.
- Implementação de logout seguro via blacklist de tokens JWT, impedindo reutilização após o logout.
- .NET 8
- ASP.NET Core Web API
- Entity Framework Core (InMemory)
- JWT (Microsoft.AspNetCore.Authentication.JwtBearer)
- Swagger (OpenAPI)
- BCrypt.Net-Next
- IDE: Visual Studio / Visual Studio Code
- .NET 8 SDK instalado
- Editor de código (VS Code, Visual Studio, etc.)
Clone o repositório:
git clone https://github.com/lerri05/SafeScribeAPIcp5.git
cd SafeScribeAPI
Configure o arquivo appsettings.json com sua chave JWT:
"Jwt": {
"Key": "sua_chave_super_secreta",
"Issuer": "SafeScribe.Api",
"Audience": "SafeScribe.Clients",
"ExpireMinutes": 60
}- dotnet run
- Acesse o Swagger (https://localhost:5001/swagger) para testar os endpoints:
👤 Autenticação - /api/v1/auth
| Método | Endpoint | Descrição | Permissão |
|---|---|---|---|
| POST | /registrar | Registra um novo usuário | — |
| POST | /login | Realiza login e retorna um token JWT | — |
| POST | /logout | Invalida o token JWT ativo (blacklist) | — |
📝 Notas - /api/v1/notas
| Método | Endpoint | Descrição | Permissão |
|---|---|---|---|
| POST | /api/v1/notas | Cria uma nova nota | Editor, Admin |
| GET | /api/v1/notas/{id} | Retorna uma nota específica | Leitor, Editor (própria) / Admin (qualquer) |
| PUT | /api/v1/notas/{id} | Atualiza uma nota | Editor (própria) / Admin |
| DELETE | /api/v1/notas/{id} | Remove uma nota | Admin |
A API possui interface interativa via Swagger para testar endpoints e verificar o fluxo de autenticação JWT.
SafeScribeAPI
├── Controllers
│ ├── AuthController.cs
│ └── NotesController.cs
│
├── DTOs
│ ├── ChangePasswordDto.cs
│ ├── LoginRequestDto.cs
│ ├── NoteCreateDto.cs
│ ├── NoteDto.cs
│ └── UserRegisterDto.cs
│
├── Data
│ ├── ApplicationDbContext.cs
│ └── DbInitializer.cs
│
├── Helpers
│ └── PasswordHasher.cs
│
├── Middleware
│ └── JwtBlacklistMiddleware.cs
│
├── Models
│ ├── Note.cs
│ ├── User.cs
│ └── UserRoles.cs
│
├── Properties
│ └── launchSettings.json
│
├── Services
│ ├── ITokenBlacklistService.cs
│ ├── ITokenService.cs
│ ├── InMemoryTokenBlacklistService.cs
│ └── TokenService.cs
│
├── Program.cs
├── SafeScribeAPI.csproj
├── appsettings.json
├── .gitattributes
└── .gitignore
✅ Aplicação desenvolvida
| Nome | RM | GitHub |
|---|---|---|
| Lucas Lerri de Almeida | 554635 | @lerri05 |
| Fernanda Budniak de Seda | 558274 | @Febudniak |
| Karen Marques dos Santos | 554556 | @KarenMarquesS |