I don’t think CF’s SAML implementation is intended to act as the IDP, it is intended to act as a SP. I think CF actually uses the java-saml library that @dswitzer mentions, I’ve also used that library directly (to act as a SP) and it works well for that purpose. If you really are intending to write a SAML IDP, you might want to pause and ask why are we doing that - the vast majority of organizations would rather rely on one that is already written and battle tested, such as Active Directory, Okta, Google, etc. Not saying there are not reasons to do so, but might be worth seeing if you already have one you can use if you haven’t done so already.