SAML has a lot of hidden traps. I would avoid rolling my own service provider client.
The open source Shibboleth service provider should meet all your needs. Bonus, the creators of the software are the people who wrote the specifications for SAML. You can essentially consider it the reference implementation of the spec.
Using it with ADFS has its own ways of possessing pitfalls and quirks. But there are plenty of people in the community on the mailing lists that can help -- http://shibboleth.net/community/lists.html.