Executando verificação de segurança...
1

Consumo de API em apenas um client

Estou desenvolvendo uma API onde vai ser consumida por apenas um client (único), qual a melhor maneira de fazer a autenticação?

Até o momento vou gerar uma chave manualmente e inserir no código. Após, passo essa mesma chave utilizada para o client e em toda requisição ele utiliza essa chave. No código apenas faço a comparação.

Vocês costumam fazer assim mesmo quando é algo mais simples?

Carregando publicação patrocinada...
2

Uso o Laravel Sanctum, super simples. Crio uma rota para criar tokens e as outras rotas da aplicação ficam protegidas por um middleware. Dessa forma é só passar o token por bearer token na requisição e o Sanctum faz todo o resto (não precisa ficar comparando, além da falha de segurança, é claro), não é porque é só pra um cliente que você vai fazer de qualquer jeito né? Isso aí pode crescer um dia e você já deixa tudo prontinho pra escalar.

Documentação aqui

Exemplo:

// Rota create tokens
Route::post('/tokens/create', function (Request $request) {

    // Aqui eu posso fazer validação de login e daí crio um token pro usuário autenticado
    $token = $request->user()->createToken('auth');
    
    // response
    return response()->json(['token' => $token->plainTextToken]);
});


// Grupo de rotas protegidas
Route::middleware(['auth:sanctum'])->group(function(){

    // Rota produtos
    Route::get('/produtos', function (Request $request) {
        
        // response
        return response()->json(['produtos' => Produto::all()]);
    });

}); // grupo

Simples assim. Dá pra melhorar um montão ainda, Laravel é show de bola.

2

não é porque é só pra um cliente que você vai fazer de qualquer jeito né

Sim. Estou completamente errado.

É um projeto em Cake (😞), não está utilizando Laravel.

2

Dá tempo de mudar em. E outra, não sei se você tem algum conhecimento em Laravel, mas com ele, você consegue reescrever esse sistema rapidamente. Você vai poder usufruir de factories, seeders, migrations, models... E o principal, o Artisan. Por meio de uma linha no terminal você cria model, factory, seeder, migrations, form requests, policy e controller já com os métodos digitados. É muita facilidade, basta desenvolver a regra de negócio. Fora o breeze né, que já faz toda parte de autenticação pra você e deixa um dashboard pronto pra você desenvolver.

// Cria toda essa parada aí de uma vez só
php artisan make:model --all

Boa sorte

2

Então, é um sistema antigo e bem grande, não faria sentido reescrever tudo.
Os novos sistemas já são desenvolvidos em Laravel mesmo e não tem nem comparação kkkk.

Mas agradeço suas dicas 🙂

Como é algo que precisa ser feito rápido e eu teria um único client (sim, será apenas um, não existe possibilidade de aumentar) pra apenas um endpoint, queria simplificar o máximo possível.

1

Pode ser feito com uma chave nos parâmetros da API ou nos headers contendo a chave de autenticação, que pode ser qualquer coisa. Crie um padrão pra chave e faça condicionais nesses padrões antes de verificar a chave com o banco de dados. Vai te poupar processamento em caso de bruteforce. Abraços e boa sorte!