diff --git a/Web/Authenticate/Rpxnow.hs b/Web/Authenticate/Rpxnow.hs
--- a/Web/Authenticate/Rpxnow.hs
+++ b/Web/Authenticate/Rpxnow.hs
@@ -38,6 +38,8 @@
 import qualified Data.Attoparsec.Lazy as AT
 import Data.Text (Text)
 import qualified Data.Aeson.Types
+import qualified Data.Map as Map
+import Control.Applicative ((<$>), (<*>))
 
 -- | Information received from Rpxnow after a valid login.
 data Identifier = Identifier
@@ -101,9 +103,9 @@
 parseProfile :: Value -> Data.Aeson.Types.Parser Identifier
 parseProfile (Object m) = do
     profile <- m .: "profile"
-    ident <- m .: "identifier"
-    let profile' = mapMaybe go profile
-    return $ Identifier ident profile'
+    Identifier
+        <$> (profile .: "identifier")
+        <*> return (mapMaybe go (Map.toList profile))
   where
     go ("identifier", _) = Nothing
     go (k, String v) = Just (k, v)
diff --git a/authenticate.cabal b/authenticate.cabal
--- a/authenticate.cabal
+++ b/authenticate.cabal
@@ -1,5 +1,5 @@
 name:            authenticate
-version:         0.9.1.2
+version:         0.9.1.3
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -34,7 +34,8 @@
                      http-types >= 0.6 && < 0.7,
                      enumerator >= 0.4.7 && < 0.5,
                      blaze-builder >= 0.2 && < 0.4,
-                     attoparsec >= 0.8.5 && < 0.9
+                     attoparsec >= 0.8.5 && < 0.9,
+                     containers
     exposed-modules: Web.Authenticate.Rpxnow,
                      Web.Authenticate.OpenId,
                      Web.Authenticate.OpenId.Providers,
