Se l'accesso alla tua API REST deve essere limitato, dovresti trattarlo come qualsiasi applicazione web. L'utilizzo di un token segreto fisso è una tecnica sicurezza attraverso l'oscurità , che va contro i principi di sicurezza accettati come Principio di Kerckhoffs e massima di Shannon.
Il meccanismo standard per l'autenticazione nelle API REST è una chiave API, che è un lungo token casuale dato agli utenti. La chiave API agisce sia come nome utente che come password, in quanto è univoca e segreta.
Ci sono due modi per fornire questo tipo di autenticazione:
- Invia la chiave API ad ogni richiesta e confermala ogni volta. Ciò richiede meno codice, ma significa che devi inviare il tuo segreto in ogni richiesta, il che crea più rischi.
- Invia la chiave API come parte di una richiesta di "accesso", quindi restituisci un ID di sessione. L'ID di sessione diventa il meccanismo di sicurezza per il resto della sessione, quindi non si ha il problema di inviare la chiave API ogni volta. Dopo il timeout della sessione, la chiave API deve essere inviata di nuovo. Sfortunatamente questo si traduce in un maggior numero di codice e un maggior potenziale di errori.
Dato che dovresti usare HTTPS per i metodi entrambi in ogni caso, sceglierei la prima opzione. La sicurezza del trasporto consente di impedire la modifica dei payload e mantiene segreta la chiave API.