Implementing a Shibboleth Identity Provider