Windows identity during asynchronous calls

D

Dave Mullen

I'm trying to access a SQL server from a thread started from an asp.net
application and get a "Cannot log into database as user null..." error. How
can I make the thread inherit the same identity as the calling process?
When I spin off the thread I have seen that it typically runs as NT
ANONYMOUS\SYSTEM (via
System.Security.Principal.WindowsIdentity.GetCurrent().Name). I have had
intermittent success
passing the token of the calling process and impersonating it in the called
process but once in a while hit an exception when trying to impersonate.

Web Config of calling process:
<authentication mode="Forms" >
<forms name="adAuthCookie" loginUrl="_mem_bin/formslogin.aspx"
protection="All" path="/" timeout="60" ></forms>
</authentication>
<identity impersonate="true" />

Web Site Directory Security of calling process is set to Anonymous Access.
Account used for anonymous access is a user w/ permissions to our SQL Server
db. Windows Integrated Authentication is also checked.

calling asynchronous process:
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf lfd.SubmitRequest),
System.Security.Principal.WindowsIdentity.GetCurrent().Token)

Impersonation Logic:
Sub SubmitRequest(ByVal Token As Object)
System.Security.Principal.WindowsIdentity.Impersonate(CType(Token,
System.IntPtr))

Thanks,

Dave
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top