First of all thanks for this nice WebService ;) !! It will be really nice to have an open source code :p
Here after way to configure impersonation if you want users have to authenticate.
FYI : I’m on W2K8 R2 plateform
Create your AppPool as it’s written in documentation and your site.
Add Basic authentication to IIS role.
Customize your App Pool:
Change the managed pipeline mode to classic (right click on your App Pool -> Basic Settings) and verify Microsoft .Net is selected.
Change Load User Profile to true (right click on your App Pool -> Advanced Settings) and let ApplicationPoolIdentity in Identity.
Customize your virtual folder:
Authentication: activate Basic Authentication and ASP .Net Impersonation (with authenticated user selected) and remove Anonymous and Windows (as you wish)
That’s it :D Impersonation is supposed to work now
Of course it's an AS IS post.