IIS Express – Windows hitelesítési hiba

Az egyik labor anyagát frissítettem mostanában olyan feladatokkal, ahol a HTTP protokollt vizsgálják meg kicsit a hallgatók. Ahhoz, hogy kellően kézben lehessen tartani a szerver válaszát, mindenki egy virtuális gépen futó helyi webszervert használ majd. Végül az IIS Expresst választottam webszervernek, mert az IIS-t ismertem már korábbról.

Tényleg jól használható lett az Express változat, a .NET 4 telepítése után egy pillanat alatt fent is van. Nem szolgáltatásként fut, hanem kézzel kell elindítani az iisexpress.exe programot, és paraméterként megadni, hogy milyen fő konfigurációs fájlt használjon (applicationHost.config), és az azokban definiált webhelyek közül melyiket indítsa el. Az applicationHost.config leírása alapján elég könnyen összelegózható, hogy mi kell nekünk. Gyorsan ki is kapcsoltam a legtöbb optimalizálást (többszintű cache, statikus és dinamikus tartalom tömörítése, stb.), hogy szépen lehessen Wiresharkban látni egy egyszerű oldal lekérés során, hogy hogyan működik a HTTP.

Minden működött is, kivéve a windowsos hitelesítés (windows authentication). A Basic még ment, de ha csak az integrált volt bekapcsolva, akkor bekérte a felhasználónevet és jelszót, és utána a következő hibát adta:

Nem túl beszédes:-) Szerencsére a Failed Request Tracing alapból be van kapcsolva az IIS Expressben, így onnan egy részletesebb hibát is ki lehetett olvasni:

A hiba tehát a következő:

"No credentials are available in the security package (0x8009030e)"

Nem lettem sokkal okosabb, sok találat volt erre a hibára, de semmi relevánsat nem találtam. Végül már jobb nem jutott eszembe, mint hogy összevessem a forgalmazott csomagokat egy teljesen friss IIS Express telepítésen rögzítettekkel (ott működött). Végül is ez egy wiresharkos mérés lesz, itt az idő használni is;)

A bal oldalinál működik rendesen, de a jobb oldalinál egyszerűen megállt a Challange küldése után, a kliens nem válaszolt:

Pedig a kérések első ránézésre ugyanolyanok, még a Negotiate és a Challange is rendesen megérkezik. Mi lehet akkor a különbség? Szerencsére a Wiresharkból lehet szöveges formába exportálni a teljes kommunikációt, utána azt pedig már könnyű sorról-sorra összehasonlítani. Na jó, azért annyira nem könnyű, van kb. 500 sornyi adat, és jó néhány helyen eltérnek:

Az eltérések egy része normális (sequence number, portszám, stb.), viszont pont a hitelesítéssel kapcsolatos részek megegyeztek. Végül meglett a bűnös, a következő sor szerepelt a hibásban:

Connection: close\r\n

Ez pedig a Keep-Alive. A mérési környezetben kikapcsoltam, hogy tisztábban lehessen látni, hogy mikor indul egy-egy új kérés, ennek hiányában viszont az integrált hitelesítés nem működött. Visszakapcsolva ment minden rendesen:)

(Most, hogy tudom, hogy mit kell keresni, más is belefutott már ebbe: Turing off Http Keep-Alive and using Windows Authentication with IIS: Don’t do it…)

Advertisements
Kategória: Tech
Címke: , ,
Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s