A Haskell implementation of the OpenID 2.0 spec