Tuesday, January 18, 2011

Sätta upp ett intranät med windowsauthenticering utan login

En grej som verkade simpel till en början men som visade sig otroligt krånglig har äntligen löst sig och det fick mig att känna mig tvungen att blogga om saken.

Jag håller på att releasa ett intranät för en kund och ett krav var att användarna skulle loggas in utan att få en loginruta. En simpel grej kan tyckas, men när man är stressad och grejer inte funkar så kan man lätt få lite panik.

Det jag tyckte skulle behöva göras för att få det hela att funka var att sajten som man ska loggas in på automatiskt ligger i zonen "intranet", att windows authentication är påslaget på webbservern och att authentication mode är satt till "Windows" i web.config. Sen ska ju användarna helst använda IE åxå...men även Chrome ska funka fint.

Mitt problem var att detta inte funkade i min installation, och när saker inte funkar så börjar man ju först metodiskt och testar det man rent logiskt "vet" ska funka. Sen ber man om hjälp. Hjälpen testar samma saker som mig. När inte det funkar så går man bärsärk och testar även helt galna grejer. Vi provade alla möjliga kombinationer av authenticeringsmekanismer. Vi byggde nya testsajer med olika config.

Det underliga och som gjorde mig extra frustrerad var dock att det som funkade på kollegans maskin inte funkade på min. Därför så fixade jag en helt ny maskin som var totalt ren. Hjälpte det? Icke!
Nu blev man ju rent ut sagt förbannad! Men då hittade jag den här bloggpostenEPiServer World som hjälpte mig att lösa mina problem. (Frågan är varför jag inte hittade den när jag googlade igår...)
Den sidan har en checklista med grejer som behöver göras för att få en Episajt att funka som ett intranät med automatiskt inloggning.

Nu till det viktiga! För grejen är den att jag faktiskt hade följt alla punkterna på den listan...utom den sista, som förklarar att det finns en grej i windows som inte tilllåter automatisk login ifall webbservern ligger på samma maskin som den man surfar. Detta pga av nån slags loopbackcheck. Så för att fixa detta krävs det att man hackar registret. Man lägger helt sonika till två värden där och vips så funkade något som jag har suttit över en dag med att försöka klura ut.