Chiarimento su Regole Tecniche

Salve a tutti.
Ho bisogno di un chiarimento per interpretare le Regole Tecniche SPID:
nella sezione “Precessamento della Response” si legge:
Il fornitore di servizi deve garantire che le asserzioni non vengano ripresentate, mantenendo il set di identificatori di richiesta (ID) usati come per le <AuthnRequest> per tutta la durata di tempo per cui l’asserzione risulta essere valida, secondo l’attributo NotOnOrAfter dell’elemento <SubjectConfirmationData> presente nell’asserzione stessa.

io la interpreterei come:
… mantenendo il set di identificatori di risposta <Response> (ID) usati …
ovvero gli ID da mantenere in questo caso sono quelli delle Response, non delle AuthnRequest,
o non ho capito qualcosa ?

Grazie

Sì, è così, il Service Provider deve mantenere gli ID delle risposte (non delle richieste, che eventualmente dovrà tracciare l’IdP) e deve controllato che la stessa risposta non venga ricevuta più volte. Se guardi la documentazione di java-saml, una delle implementazioni in Java, dice esattamente questo:

Tuttavia, stando alle specifiche SAML, non è neppure questo il modo più corretto di proteggersi dai replay attacks. Le specifiche SAML 2.0, infatti, stabiliscono che bisogna tracciare gli id delle asserzioni, non dei messaggi di risposta (vedi capitolo 4.1.4.5 del SAML 2.0 Profiles).

A mio parere, se tracci entrambi i tipi di id e verifichi di non ricevere duplicati per entrambi, di sicuro non sbagli.