Wikipedia presents the following example of nonce-based authentication:
Client requests nonce from server.
Server responds with nonce (i.e.,
This protocol is basically a challenge–response authentication. It is used to avoid sending the actual secret (e. g., password), but the response can only be valid with knowledge of the secret. And to avoid replay attacks, a nonce is incorporated.
However, the mentioned protocol requires the server to store the secret in a retrievable form (e. g., plaintext or encrypted).
But you could change the protocol to allow the use of password hashes instead of the plaintext passwords by requiring the client to generate the same password hash: