Vorrei implementare un'API REST con l'autenticazione di base che si basa su nome utente e password. Poiché REST è senza stato, l'utente dovrebbe immettere nuovamente nome utente e password per ogni richiesta senza memorizzarli in un cookie. Poiché la memorizzazione di nome utente e password in un cookie non è un'opzione, è necessaria un'altra soluzione.
Lo scenario che sto pensando sarà il seguente:
- L'utente passa al link
- L'utente inserisce nome utente e password (crittografati con SSL).
- Il sistema verifica se le credenziali fornite sono corrette.
- Se corretto: il sistema genera un GUID, crittografa il GUID con la password dell'utente e lo invia all'utente.
- Se non è corretto: aumenta FailedPasswordAttemptCounter e controlla se l'accesso deve essere bloccato per l'utente.
Poiché la risposta del server al client non è crittografata, il GUID è crittografato con la password dell'utente. Solo l'utente è in grado di decodificare il GUID.
L'utente fornisce il GUID per tutte le altre risorse che necessitano di autenticazione invece di nome utente e password.
Questo approccio è migliore rispetto alla fornitura di nome utente e amp; password per ogni richiesta?
Sono consapevole del fatto che qualcuno è in grado di generare GUID e tenta di autenticarsi con loro. Ma un attacco mirato a un utente specifico è quasi impossibile in quanto la risorsa di accesso fornisce un meccanismo di blocco.
La mia domanda è in qualche modo correlata a questo: link