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

SENDT AF Zevenet | 2. august 2018

Oversigt

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

Der kunne tages hensyn til to forskellige scenarier: Interaktiv NTLM-godkendelse er sammensat af to systemer en klient og en domænecontroller, der bruges til at gemme brugerdataene, der kræves for at tjene godkendelser, 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 tillader webapplikationer at autentificere og godkende brugere, der er afhængige af Microsoft IIS.

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

Hvordan virker NTLM?

NTLM-protokollen er baseret på HTTP / S-protokollen, hvor en given klient starter et håndtryk af i alt 6-trin for at etablere den godkendte session.

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

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

GET / HTTP

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

401 Unauthorized
WWW-Authenticate: NTLM

3. Klienten videresender anmodningen, herunder en NTLM-format-godkendelsesudfordring.

GET / HTTP
Authorization: NTLM <base64-encoded first NTLM message>

4. Serveren svarer med en ikke-autoriseret meddelelse og anmodninger om mere information til klienten.

401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded second NTLM message>

5. Klienten sender anmodningen tilbage, herunder resten af ​​sessionen.

GET / HTTP
Authorization: NTLM <base64-encoded third NTLM message>

6. Serveren forbinder domænecontrolleren med at fuldføre godkendelsesforespørgslen og bekræfter derefter godkendelsen til klienten.

HTTP 200 OK

Bemærk, at dette håndtryk er påkrævet i enhver ny forbindelse, ikke HTTP-anmodninger, og i trin 3 til 6 kræver forbindelsen at være i live. Hvis forbindelsen er lukket, skal denne del af håndtrykket gentages, og det er ikke gyldigt bare at gentage fra trin 5. På den anden side, når forbindelsen er godkendt, behøver autorisationshovedet ikke at blive sendt igen, mens forbindelsen lukkes ikke uafhængigt af den ressource, der er adgang til.

Sådan indlæser du websapplikationer med balance ved hjælp af NTLM-godkendelse?

Med Zevenet er der 2 vigtigste måder at indlæse balance på og opbygge en NTLM-baseret webapplikation i høj tilgængelighed med en enkel 4 TCP load balancer eller med en 7-proxy for avancerede funktioner.

Enkel NTLM belastningsbalancering ved lag 4

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

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

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

Endelig tilføj din liste over backends og konfigurer en sundhedstjek som angivet i afsnittene nedenfor.

NTLM belastningsbalancering ved lag 7

Disse indstillinger giver mulighed for at håndtere HTTP / S-data med NTLM-understøttelse med lag 7-proxy konfigureret via LSLB-modul og HTTP-gård. Til dette skal vi oprette en gård til HTTP eller HTTPS i henhold til SSL-kravene til den virtuelle service. Den eneste forskel ville være Lytter konfigureret i Globale indstillinger af den skabte gård.

På dette lag, da programmet ikke er i stand til at oprette nogen session cookie endnu for at skabe en vedholdenhed eller tilslutningspindring, kan vi gøre brug af Cookie-indsættelse mulighed, der tillader lastbalanceren at oprette en ny cookie under den første håndtryk af NTLM-godkendelsen.

Endelig tilføj din liste over backends og konfigurer en sundhedstjek som angivet i afsnittene nedenfor. Du kan konfigurere yderligere applikationsindstillinger på proxyniveau, der er inkluderet i denne slags gård, og NTLM-understøttelsen vil ikke blive påvirket.

Avanceret sundhedskontrol til NTLM-godkendelseswebsteder

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

#!/bin/bash

# get input parameters
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

if [ $? == 0 ]
then
	# if the curl command doesn't fail then notify that the backend is up
	echo "Server ${BACKEND}:${PORT} OK"
	exit 0
fi

# if the the curl command fails then notify that the backend is down
echo "Server ${BACKEND}:${PORT} is not OK"
exit 1

I boksen Overvågning >> Farmguardian afsnit, hvis det er tilfældet, eller tilføj det til kommandoen for at tjekke bedriftsservice.

Vi kan teste sundhedstjekskriptet ved at udføre:

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

At vide, at backend IP er 192.168.0.99 havnen er 80 HTTP, JohnJensen er en dummy bruger i vores domæne, johnsecret er dummy adgangskoden, “/ Min / uri” er URI at kontrollere og “DOCTYPE html” Er strengen at finde 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 brugerdefinerede sundhedskontrol.

Når vores sundhedskontrol testes fra kommandolinjen og klar, kan vi tildele det til gårde konfigureret med NTLM support.

Nyd din belastning afbalancerede NTLM webapplikationer!

Del på:

Dokumentation i henhold til GNU Free Documentation License.

Var denne artikel til hjælp?

Relaterede artikler