Belastningsbalancering af webapps med IIS-godkendelse NTLM og ASP.NET Impersonation

Se kategorier

Belastningsbalancering af webapps med IIS-godkendelse NTLM og ASP.NET Impersonation

4 min læses

Oversigt #

Microsofts webserver, Internet Information Services (IIS), integrerer adskillige godkendelsesmekanismer for at validere brugere mod et Active Directory eller stand-alone (LDAP-baserede godkendelsessystemer). NTLM er Windows Challenge/Response-godkendelsesprotokollen, der kan bruges i netværk og applikationer, der kan bruges i begge miljøer.

To forskellige scenarier kan tages i betragtning: Interaktiv NTLM-godkendelse er sammensat af to systemer, en klient og en domænecontroller, som bruges til at gemme de brugerdata, der kræves for at betjene autentificeringer, og Ikke-interaktiv NTLM-godkendelse involverer tre forskellige systemer en klient, en applikationsserver og et domæne for at give en bruger adgang til en bestemt ressource i en applikation.

ASP.NET efterligning giver webapplikationer tilladelse til at godkende og autorisere brugere, der er afhængige af Microsoft IIS.

I denne artikel vil vi forklare, hvordan man indlæser balanceapplikationer, der integrerer NTLM-protokollen til ikke-interaktive brugergodkendelsesscenarier.

Hvordan virker NTLM? #

NTLM-protokol er afhængig af HTTP/S-protokol, hvor en given klient starter et håndtryk på i alt 6 trin for at etablere den autentificerede session.

Det godkendte sessionshåndtryk kræver følgende trin:

1. Klienten initierer en anonym anmodning af en bestemt ressource til en webserver.

GET / HTTP

2. Serveren svarer med en ikke-autoriseret besked og den godkendelsesmetode, som klienten skal bruge.

401 Uautoriseret WWW-godkendelse: NTLM

3. Klienten gensender anmodningen inklusive en NTLM-formatgodkendelsesudfordring.

GET / HTTP-autorisation: NTLM

4. Serveren svarer med en ikke-autoriseret besked og anmoder om mere information til klienten.

401 Uautoriseret WWW-godkendelse: NTLM

5. Klienten gensender anmodningen inklusive resten af ​​sessionsinformationen.

GET / HTTP-autorisation: NTLM

6. Serveren forbinder med domænecontrolleren for at fuldføre godkendelsesanmodningen og bekræfter derefter godkendelsen over for klienten.

HTTP 200 OK

Bemærk, at dette håndtryk er påkrævet i hver ny forbindelse, ikke HTTP-anmodninger, og under trin 3 til 6 skal forbindelsen holdes i live. Hvis forbindelsen er lukket, skal denne del af håndtrykket gentages, og det er ikke gyldigt blot at gentage fra trin 5. På den anden side, når forbindelsen er godkendt, behøver autorisationsoverskriften ikke at blive sendt igen, mens forbindelsen er ikke lukket uafhængigt af den tilgåede ressource.

Hvordan load balance webapplikationer ved hjælp af NTLM-godkendelse? #

Med RELIANOID, er der 2 hovedmåder til belastningsbalance og opbygning af en NTLM-baseret webapplikation i høj tilgængelighed, med en simpel lag 4 TCP belastningsbalancer eller med en lag 7 proxy for avancerede funktioner.

Simpel NTLM-belastningsbalancering på lag 4 #

For at indlæse balance webapplikationer med NTLM-godkendelsesunderstøttelse med en simpel konfiguration, kan vi oprette LSLB-baserede farme med L4xNAT-profil. Vi kan bruge enten HTTP- eller HTTPS-protokoller.

Sørg derefter i den globale konfiguration for, at den anvendte protokol er TCP men vi kan vælge NAT or DNAT i henhold til den krævede topologi.

I Det vi er gode til sektion, er det nødvendigt at indstille persistensen for at sikre, at godkendelsen for en bestemt klient altid går til den samme backend, ellers kunne forbindelsesgodkendelsen ikke udføres.

Tilføj endelig din liste over backends og konfigurer et sundhedstjek som angivet i afsnittene nedenfor.

NTLM belastningsbalancering på lag 7 #

Denne indstilling gør det muligt at håndtere HTTP/S-data med NTLM-understøttelse med lag 7-proxyen konfigureret gennem LSLB-modulet og HTTP-farmen. Til dette skal vi oprette en farm til HTTP eller HTTPS i henhold til SSL-kravene til den virtuelle tjeneste. Den eneste forskel ville være Lytter konfigureret i Globale indstillinger af den oprettede gård.

På dette lag, da applikationen endnu ikke er i stand til at oprette en sessionscookie for at skabe en persistens eller forbindelsesstifting, kan vi gøre brug af Cookie-indsættelse mulighed, der tillader belastningsbalanceren at oprette en ny cookie under det indledende håndtryk af NTLM-godkendelsen.

Tilføj endelig din liste over backends og konfigurer et sundhedstjek som angivet i afsnittene nedenfor. Du kan konfigurere yderligere applikationsmuligheder på proxy-niveau inkluderet i denne type farm, og NTLM-understøttelsen vil ikke blive påvirket.

Avancerede sundhedstjek for NTLM-godkendelseswebsteder #

For at oprette vores tilpassede avancerede sundhedstjek til NTLM-godkendte applikationer, skal vi oprette under stien /usr/local/relianoid/app/libexec et script til at kontrollere backend, som det er vist nedenfor. For eksempel, check_ntlm.sh med de relevante tilladelser.

#!/bin/bash # få inputparametre BACKEND=$1 PORT=$2 USER=$3 PASS=$4 URI=$5 STRING=$6 /usr/bin/curl http://${BACKEND}:${PORT}${URI } --ntlm -negotiate -u ${USER}:${PASS} 2>/dev/null | grep "${STRING}" &>/dev/null hvis [ $? == 0 ] derefter # hvis curl-kommandoen ikke mislykkes, så giv besked om, at backend er oppe ekko "Server ${BACKEND}:${PORT} OK" exit 0 fi # hvis curl-kommandoen mislykkes, så giv besked om, at backend er nede ekko "Server ${BACKEND}:${PORT} er ikke OK" exit 1

I Overvågning >> Farmguardian afsnit, hvis det er relevant, eller tilføje det til kommandoen for at tjekke ind i gårdtjenesten.

Vi kan teste sundhedstjekscriptet ved at udføre:

/usr/local/relianoid/app/libexec/check_ntlm.sh 192.168.0.99 80 johndoe johnsecret "/my/uri" "DOCTYPE html"

Velvidende, at backend-IP'en er 192.168.0.99 havnen er 80 HTTP, JohnJensen er en dummy-bruger på vores domæne, johnsecret er dummy-adgangskoden, "/min/uri" er den URI, der skal kontrolleres og "DOCTYPE html" er den streng, der skal findes i svardataene, når anmodningen er vellykket.

Vi anbefaler at oprette en dummy-bruger, der er i stand til at logge ind på domænet, men uden tilladelser, for at inkludere det i sundhedstjekket af vores tjenester. Det er grunden til at bruge JohnJensen dummy-bruger i vores tilpassede sundhedstjek.

Når vores sundhedstjek er testet fra kommandolinjen og klar, kan vi tildele det til farmene, der er konfigureret med NTLM-understøttelse.

Nyd dine belastningsbalancerede NTLM-webapplikationer!

📄 Download dette dokument i PDF-format #

    EMAIL: *

    drevet af BetterDocs