<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Security</title><link>http://forums.asp.net/25.aspx</link><description>All about ASP.NET security (authentication, authorization, membership, roles, etc.) and the Login controls. &lt;a href="http://aspadvice.com/SignUp/list.aspx?l=24&amp;c=17" target="_blank"&gt;Email List&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542812.aspx</link><pubDate>Mon, 22 Jan 2007 16:02:33 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542812</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542812.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542812</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542811.aspx</link><pubDate>Mon, 22 Jan 2007 16:02:24 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542811</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542811.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542811</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542809.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:46 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542809</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542809.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542809</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542808.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:41 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542808</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542808.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542808</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542807.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:41 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542807</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542807.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542807</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542806.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:39 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542806</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542806.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542806</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542804.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:16 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542804</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542804.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542804</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542803.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:13 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542803</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542803.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542803</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542802.aspx</link><pubDate>Mon, 22 Jan 2007 16:01:11 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542802</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542802.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542802</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542799.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:40 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542799</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542799.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542799</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542798.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:39 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542798</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542798.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542798</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542797.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:39 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542797</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542797.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542797</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542796.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:37 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542796</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542796.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542796</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542795.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:36 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542795</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542795.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542795</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item><item><title>Re: what is Impersonation</title><link>http://forums.asp.net/thread/1542792.aspx</link><pubDate>Mon, 22 Jan 2007 16:00:19 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:1542792</guid><dc:creator>IMBack</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/1542792.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=25&amp;PostID=1542792</wfw:commentRss><description>&lt;p&gt;Hi I tried implementing the code from : &lt;a href="http://support.microsoft.com/kb/306158"&gt;http://support.microsoft.com/kb/306158&lt;/a&gt;. But I am allitle bit confused of how it works.&lt;/p&gt;
&lt;p&gt;for example:&amp;nbsp; &lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser("username", "domain", "password")) //where do I get this information?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;I have attached the code behind that I currenlty have, please let me know what should be changed. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;Thank you,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_LOGON_INTERACTIVE = 2;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;const&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LOGON32_PROVIDER_DEFAULT = 0;
&lt;p&gt;WindowsImpersonationContext impersonationContext; &lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll")]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; LogonUserA(String lpszUserName, 
&lt;p&gt;String lpszDomain,&lt;/p&gt;
&lt;p&gt;String lpszPassword,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonType, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; dwLogonProvider,
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr phToken);
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; DuplicateToken(IntPtr hToken, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; impersonationLevel, 
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; IntPtr hNewToken);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; RevertToSelf();
&lt;p&gt;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;static&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;extern&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; CloseHandle(IntPtr handle);
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Page_Load(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; sender, System.EventArgs e)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;try&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//System.Security.Principal.WindowsImpersonationContext i ;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; username = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate().ToString();
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(impersonateValidUser(username, "domain", "password"))
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Insert your code that runs under the security context of a specific user here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Insert your code that runs under the security context of a specific user here.");&lt;/p&gt;
&lt;p&gt;undoImpersonation();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;else&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;//Your impersonation failed. Therefore, include a fail-safe mechanism here.&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|Your impersonation failed");&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;catch&lt;/font&gt;&lt;font size=2&gt;(Exception ex)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Response.Write("&amp;lt;BR&amp;gt;|"+ ex.Message+ "|&amp;lt;BR&amp;gt;");&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;bool&lt;/font&gt;&lt;font size=2&gt; impersonateValidUser(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; userName, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; domain, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; password)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;WindowsIdentity tempWindowsIdentity;&lt;/p&gt;
&lt;p&gt;IntPtr token = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;IntPtr tokenDuplicate = IntPtr.Zero;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(RevertToSelf())
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE, 
&lt;p&gt;LOGON32_PROVIDER_DEFAULT, &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; token) != 0)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(DuplicateToken(token, 2, &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ref&lt;/font&gt;&lt;font size=2&gt; tokenDuplicate) != 0) 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;tempWindowsIdentity = &lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; WindowsIdentity(tokenDuplicate);
&lt;p&gt;impersonationContext = tempWindowsIdentity.Impersonate();&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt; (impersonationContext != &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt;)
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(token!= IntPtr.Zero)
&lt;p&gt;CloseHandle(token);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;if&lt;/font&gt;&lt;font size=2&gt;(tokenDuplicate!=IntPtr.Zero)
&lt;p&gt;CloseHandle(tokenDuplicate);&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;private&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; undoImpersonation()
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;impersonationContext.Undo();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;==========web config file===============&lt;/p&gt;&lt;font color=#0000ff size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;identity&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;impersonate&lt;/font&gt;&lt;font color=#0000ff size=2&gt;="true"&lt;/font&gt;&lt;font color=#ff00ff size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;lt;/&lt;/font&gt;&lt;font color=#800000 size=2&gt;system.web&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item></channel></rss>