For now, the only use case I have implemented is RemoteUserAuth, but I think there could be more. If you think I hit the over engineering line, I can remove this UserInfoProvider abstraction.