Yes, sequence numbers and time stamps are good ways to disallow replay attacks. However, you don't need message authenticity nor message integrity to make them work. The reason is simple: the check only disallows messages that would otherwise be accepted.
However, if you do offer authenticity / integrity over the message then you'll still want to include the sequence number / time stamp in the calculation. Otherwise an attacker may change just the sequence number / time stamp to a new value and use that. And you do want to offer authenticity / authenticity for a secure protocol, for instance by calculating an authentication tag using a secure MAC algorithm.
The above isn't officially a replay attack because it is an active attack that alters the message that is send. That is however of little consolation if your protocol is compromised. And yes, after the integrity of the message is validated, you just need to check the sequence number or timestamp. It is then "that simple".
- Checking a time stamp or storing a sequence number in a persistent way is not necessarily easy, which is why I put "that simple" between quotation marks.
- Make sure that you cannot replay your own messages, for instance by including an sender / receiver in the message or by using separate session keys for each party.