Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Sul mio Pc di casa ho Windows XP Sp2 in inglese installato da un cd con SP2 direttamente integrato (slipstreamed). Da qui, ho creato una web application ASP.NET con 2 pagine: Login.aspx e HomePage.aspx

Il web.config contiene:

<

authentication mode="Forms">
<forms name="FORMSAUTH-TEST" loginUrl="Login.aspx"
/>
authentication>

 

<authorization>
<deny users="?"
/>
authorization>

Nella pagina Login.aspx c'è un pulsante il cui codice sull'evento click è:

System.Web.Security.FormsAuthentication.RedirectFromLoginPage("Alberto", false);

in modo che, appena faccio click, vengo rediretto sulla prima pagina dell'applicazione.

Tutto molto semplice, finché nel web.config non aggiungo:

<

identity impersonate="true" />

e non porto questa stupida applicazione al lavoro, dove ho un Pc con Windows XP Sp1 in italiano nel quale ho installato il Service Pack 2 subito dopo il rilascio nella nostra lingua "nostrana".
Se carico la mia applicazione in Visual Studio 2003, ottengo un errore del tipo

Errore inatteso: Indirizzamento HTTP 1.1 non riuscito

Questa è bella: non mi dà errore a runtime, ma durante l'apertura della solution! Non so veramente dove sbattere la testa. Finche, per qualche motivo strano, non mi viene in mente di provare a togliere il tag "identity" dal web.config.
Sorpresa! Tutto funziona!!! Almeno, fino a quando non riaggiungo il tag "identity"...
Seconda sorpresa: in un Pc Windows XP italiano con Service Pack 1 il problema non si manifesta!

Mi viene da pensare che l'installazione del Service Pack 2 di Windows XP non sia proprio identica se fatta "da zero" o fatta su un Pc con già il sistema operativo installato, almeno per quanto riguarda la parte IIS.

Keep on investigating...

Print | posted on sabato 16 ottobre 2004 15.28

Comments on this post

# re: Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Requesting Gravatar...
Visto che usi la forms authentication, sostanzialmente l'uso di impersonation è inutile.
Impersonation serve solo a sostituire il token a livello di thread per il processo corrente. Il problema è che la forms authentication non può darti un token valido visto che l'utente non esiste nello store degli utenti di Windows e quindi non ha un token.
Perciò quando tu impersoni un utente usando la forms authentication dovresti ottenere (anche se non ho provato con la sp2 ma non mi aspetto stravolgimenti) di impersonare IUSR_xxx che è un utente con pochissimi privilegi.
Probabilmente i privilegi di IUSR_xxx nella SP2 sono stati ulteriormente abbassati e da qui l'errore che hai incontrato.
Anche con la Windows authentication ci sono un mare di motivi per cui impersonation è cosa da cui stare molto lontani. Se ti interessano le motivazioni sono nelle mie slides (sessione asp.net security del workshop del 30 Settembre 2004) sul sito UGIdotNET, sezione Workshop.
Left by Raffaele Rialdi on ott 18, 2004 8.53

# re: Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Requesting Gravatar...
Quale onore!!! Il mitico Raf sul mio Blog!

Innanzitutto grazie per la risposta.
Premesso che andrò sicuramente a dare un'occhiata alle tue slides, la cosa mi pare comunque strana, perché se avesso abbassato i privilegi a IUSR_xxx, non mi spiego il comportamento diverso tra un'installazione "da zero" di XP+SP2 e un'installazione del SP2 su XP SP1.
Se devo dirla tutta, anche a me non suona bene l'Impersonation con la Forms Authentication, ma, visto che dovevo fare un'autenticazione su Active Directory tramite LDAP, ho trovato un'articolo sulla KB Microsoft, che spiega come farlo, e, su questo articolo, viene usata l'Impersonation.

Ciao
Left by Alberto on ott 18, 2004 10.10

# re: Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Requesting Gravatar...
Grazie a te dell'entusiasmo e della considerazione :-)
Se vuoi farti dire dal codice che succede basta che metti una label su una pagina e poi nella Page_Load questo codice:

lbl.Text = "";
lbl.Text += "HttpContext.Current ==> " + HttpContext.Current.User.Identity.Name + "<br>";
lbl.Text += "Principal.WindowsIdentity ==> " + System.Security.Principal.WindowsIdentity.GetCurrent().Name + "<br>";

Il primo è l'utente autenticato (dalla forms auth) mentre il secondo è quello che esegue il codice (cioè quello impersonato, se impersonation è abilitata).
L'articolo non va in contraddizione se parla di LDAP. Se non ricordo male l'articolo crea un token con LogonUser e poi lo usa per impersonare l'utente. Come dicevo nell'altro commento, impersonation si può usare solo se hai un token a disposizione e con ldap questo è possibile.
Questo però non cambia i pericoli di impersonation.
Left by Raffaele Rialdi on ott 19, 2004 1.52

# re: Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Requesting Gravatar...
Quello che mi hai suggerito lo ho già fatto.
Il problema è che con l'impersonation, non mi apre il nemmeno il project...
Visual Studio contatta IIS, ma poi dà un bel

Errore inatteso: Indirizzamento HTTP 1.1 non riuscito
Left by Alberto on ott 19, 2004 9.48

# re: Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Requesting Gravatar...
Ok, ma il web.config lo puoi cambiare anche senza vs.net ;-)
Left by Raffaele Rialdi on ott 19, 2004 9.28
Comments have been closed on this topic.