La mia attuale comprensione è la seguente:
Il client (un'applicazione Web in esecuzione nel browser dell'utente) genera un nonce, lo inserisce nella memoria della sessione del browser e reindirizza al server di autenticazione, passando il nonce come parametro. Dopo l'autenticazione, il server di autenticazione reindirizza nuovamente al client, passando un token ID firmato contenente il nonce, che il client deve convalidare rispetto al nonce dalla memoria di sessione.
Se il nonce non è convalidato, un utente malintenzionato può sostituire un altro token ID, inducendo l'utente a visitare il suo sito e inviando un reindirizzamento con un token ID valido ottenuto da una richiesta diversa.
Oltre al token ID, anche il server di autenticazione risponde con un token di accesso. Se il nonce non è convalidato, un utente malintenzionato può sostituire un diverso token di accesso, ingannando l'utente sul suo sito e reindirizzandolo con quel token. Questo potrebbe essere utilizzato per un attacco Denial of Service lato client (in particolare se le schede del browser condividono l'archivio token, ovvero utilizzare l'archiviazione locale anziché quella di sessione).
In sintesi, la convalida nonce è necessaria per fidarsi del token ID. Se il token ID non deve essere considerato attendibile, la convalida non valida può essere saltata.