[Issue #9] Add custom user authentication; change UserDetails interface to use Map instead of List for details