You need to enable impersonation:
Using IIS Authentication with ASP.NET Impersonation[
^]
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
</configuration>
If SQL is not on the same server as IIS, you will need to perform additional configuration - in particular, make sure the IIS server is trusted for delegation, and that you're using Kerberos instead of NTLM.
Checklist for Double Hop issues {IIS and SQL Server}[
^]
How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0[
^]
Ensure your Application server is set as Trusted for Delegation. Ensure in IIS that Anonymous Authentication is disabled and Windows Authentication is enabled, if using Windows 2008, enable ASP.Net Impersonation also. If using Windows 2008 and your app pool is running under Network Service then goto Advanced settings of Windows Authentication and turn Kernal Mode off. Set yourDomain\yourAppServer$ to have read access to the ASP.Net application folder.
If you still can't get it to work, you might need to switch from Windows to Basic authentication:
In IIS, only Basic Authentication logs users on with a security token that flows across the network to a remote SQL server. By default, other IIS security modes used in conjunction with the identity configuration element settings will not result in a token that can authenticate to a remote SQL Server.