This is how apps were doing it for literally decades, before JWT was invented. And most web frameworks will do all of this for you.
I've done this before. The first library I used had a horrible security issue that remained unfixed. We switched to one that seemed to be secure. Implementing SAML is non-trivial. Adding automated testing is also not something that required more senior people on our team. Getting engineers to understand how SAML work takes effort.
Also, about one out of five SAML IdP's are unconventional in some way. They are a royal pain to support.
The support burden of SAML is much higher than expected. Paying for Auth0 is cheaper than the engineering cost of supporting SAML, even with one of the existing libraries you refer to.
0: Such as use a secure hash like sha256 or blake2 instead of md5.
Hashed and salted
I hope