Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Martin Vobr

weblog o vývoji v dotnetu

Tip: jak zjistit pod kterým uživatelem běží aktuální stránka v ASP.NET

Webová stránka v ASP.NET se na serveru může vykonávat v kontextu různých uživatelů.

  • Ve Windows 2000 je to často IUSR_nazevStroje
  • Ve Windows 2003 server je to obvykle NETWORKSERVICE
  • Výše uvedené platí pokud nemáte nastavený běh webu pod jiným uživatelem
  • Výše uvedené platí pokud nemáte nastavenou impersonalizaci uživatele
  • Výše uvedené platí ... často (ale ne vždycky)

Pokud (třeba po několikaminutovém nastavování práv na adresář různým 'samozřejmým' uživatelům bez náležitého efektu) chcete vědět v jakém kontextu se OPRAVDU vykonává konkrétní webová stránka zkuste do ní přidat následující kód:

The page runs under following account: <% Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);  %>

Published 22. prosince 2005 18:16 by martinv
Filed under:

Comments

 

martinv said:

Hezke, jednoduche, uzitecne :)
Diky
prosince 23, 2005 9:40
 

martinv said:

Díky za dobrý tip, o kterém jsem neměl ponětí (znal jsem jen System.Web.HttpContext.Current.User.Identity.Name, který je úplně o něčem jiném)

Ovšem podle mě je to s uživateli v ASP.NET trochu jinak, než zmiňuješ v úvodu.

Při defaultních nastaveních IISka je následující situace:

1) ASPX stránky (např. při přístupu do filesystemu přes System.IO) běží ve Win2003 pod uživatelem NETWORK SERVICE, kdežto na nižších verzích Windows pod uživatelem ASPNET (toto konto tam založí .NET fmwk při své instalaci)

2) pod uživatelem IUSR_nazevStroje běží IISko, přesněji pod tímto uživatelem se přistupuje k webovým souborům, které IIS nezpracovává přes aspnet_isapi.dll (tedy např. pod ním běží stará ASPčka nebo se přistupuje k obrázkům)

Tolik k upřesnění Martinových výroků a nyní (trochu off-topic) bližší podrobnosti k Martinem naznačeným odchylkám proti defaultnímu stavu:

3) namísto uživatele IUSR_nazevStroje může IISko pro specifické virtuální weby, adresáře nebo i jednotlivé soubory běžet pod jiným uživatelem - ten se dá předefinovat v properties webů IISka

4) body 2 a 3 platí jen pro weby běžící v módu "anonymous access". Pokud v IIS properties virtuálního webu, adresáře či souboru vynutíte "authenticated access" (ať už Basic, Digest nebo Windows autentikaci), pak IISko (ale nikoliv ASP.NET) běží pod uživatelem, pod kterým jste se přihlásili

5) pokud máte zapnutou impersonalizaci pomocí řádky
<identity impersonate="true" />
ve web.configu, pak běží i ASPX stránky pod uživatelem jako v bodě 2 resp. 3 resp. 4
(POZN: uživatel, pod kterým je web inpersonalizován, i imperzonalizace samotná jdou konfigurovat i jinak, ale to na věci nic nemění)

6) impersonalizace zmíněná v bodě 5 se ovšem neprojeví při spouštění dalších procesů z ASPX kódu (ty se spustí vždy pod ASPNET resp. NETWORK SERVICE a obejít to jde jen přes volání API funkcí)

Myslím si, že mnou výše uvedené poznámky platí vždycky.
ledna 2, 2006 14:24
New Comments to this post are disabled

This Blog

Syndication

News

Chcete koupit ojeté auto a chcete ho nechat prohlédnout někým kdo tomu rozumí a komu můžete věřit? Zkuste mého kamaráda Michala Ráže - Poradce při koupi ojetého vozu

ComponentForge (aka Safabyte) sells components stolen from Rebex and other .NET component vendors.

Uz jste vyzkoušeli naší komponentu pro práci s formátem ZIP s hromadou ukázek v jazycích C# a VB.NET?

Inspirace na výlet: Stubaiské Alpy - jak je zažili Honza a Mišák.

Powered by Community Server (Personal Edition), by Telligent Systems