Attualmente sto cercando di scrivere un servizio Web per i clienti e il requisito è usare WS Security. Sul lato server, hanno le password archiviate come SHA-1 (salt + password).
Secondo le specifiche WSS, l'intestazione di sicurezza conterrà nonce, timestamp e password digest come SHA-1 (nonce + timestamp + password_user_entered). Quindi sul server fai SHA-1 (nonce_from_header + timestamp_from_header + password_from_database) e confrontalo con il digest della password dall'intestazione. Questo tipo di implica che le password sul back-end devono essere in chiaro. Immagino che funzionerebbe se le password sul back-end fossero solo SHA-1 (password) perché puoi istruire i clienti a costruire il digest come SHA-1 (nonce + timestamp + SHA-1 (password)) ma non riesco a fare funziona con password salate.
Nel mio caso, dal momento che le password sul back-end sono hash e salate, non sarò in grado di autenticare l'utente dal momento che sul server potrò fare solo SHA-1 (nonce_from_request + timestamp_from_request + hashed_salted_password_from_database) che non combacerà con il digest dalla richiesta. Quindi, sembra che salt debba in qualche modo trovare il modo al cliente per poter creare un digest di password che sia utilizzabile sul server.
Sembra che una soluzione sia quella di avere un servizio Web che chiami per primo e di inviare username e che tu riceva il sale per quell'utente. Quindi crei il digest di password come SHA-1 (nonce + timestamp + SHA-1 (salt_from_server + password)) e lo usi nell'intestazione per il web principale svc. Questa è una buona soluzione o esiste un modo migliore di standard industriale per gestire scenari simili?
Grazie.