IIS 인증을 사용하여 웹 응용 프로그램로드 균형 조정 NTLM 및 ASP.NET 가장

게시자 Zevenet | 2 년 2018 월 XNUMX 일

WeGO 소개

Microsoft 웹 서버 인 인터넷 정보 서비스 (IIS)는 Active Directory 또는 독립 실행 형 (LDAP 기반 인증) 시스템에 대해 사용자의 유효성을 검사하기 위해 몇 가지 인증 메커니즘을 통합합니다. NTLM 두 환경에서 사용할 수있는 네트워크 및 응용 프로그램에서 사용할 수있는 Windows 챌린지 / 응답 인증 프로토콜입니다.

다음 두 가지 시나리오를 고려할 수 있습니다. 대화 형 NTLM 인증 클라이언트와 인증을 제공하는 데 필요한 사용자 데이터를 저장하는 데 사용되는 도메인 컨트롤러의 두 시스템을 결합한 것입니다. 비대화 형 NTLM 인증 는 사용자가 응용 프로그램의 특정 리소스에 액세스 할 수 있도록하기 위해 클라이언트, 응용 프로그램 서버 및 도메인의 세 가지 시스템을 필요로합니다.

ASP.NET 가장 웹 응용 프로그램이 Microsoft IIS를 사용하는 사용자를 인증하고 권한을 부여 할 수 있습니다.

이 기사에서는 비대화 형 사용자 인증 시나리오를 위해 NTLM 프로토콜을 통합하는 애플리케이션의 부하를 분산하는 방법을 설명합니다.

NTLM은 어떻게 작동합니까?

NTLM 프로토콜은 지정된 클라이언트가 인증 된 세션을 설정하기 위해 총 6 단계의 핸드 셰이크를 시작하는 HTTP / S 프로토콜을 사용합니다.

인증 된 세션 핸드 셰이크에는 다음 단계가 필요합니다.

1. 클라이언트는 웹 서버에 대한 특정 자원의 익명 요청을 시작합니다.

GET / HTTP

2. 서버는 인증되지 않은 메시지와 클라이언트가 사용해야하는 인증 방법을 사용하여 응답합니다.

401 Unauthorized
WWW-Authenticate: NTLM

3. 클라이언트는 NTLM 형식의 인증 요청을 포함하여 요청을 다시 보냅니다.

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

4. 서버는 승인되지 않은 메시지로 응답하고 클라이언트에 더 많은 정보를 요청합니다.

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

5. 클라이언트는 나머지 세션 정보를 포함하여 요청을 다시 보낸다.

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

6. 서버는 도메인 컨트롤러와 연결하여 인증 요청을 완료 한 다음 인증을 클라이언트에 확인합니다.

HTTP 200 OK

이 핸드 셰이크는 HTTP 요청이 아닌 모든 새 연결에 필요하며 3 ~ 6 단계 동안 연결을 유지해야합니다. 연결이 닫히면 핸드 셰이크의이 부분을 반복해야하며 5 단계부터 반복하는 것은 유효하지 않습니다. 반면에 연결이 인증되면 Authorization 헤더를 다시 보낼 필요가 없습니다. 연결은 액세스 된 리소스와 독립적으로 닫히지 않습니다.

NTLM 인증을 사용하여 웹 응용 프로그램의로드 균형을 조정하는 방법은 무엇입니까?

Zevenet을 사용하면 간단한 레이어 2 TCP로드 밸런서 또는 고급 기능을위한 레이어 4 프록시를 사용하여 고 가용성으로 NTLM 기반 웹 응용 프로그램의로드 균형을 조정하고 구축 할 수있는 7 주요 방법이 있습니다.

레이어 4에서의 간단한 NTLM로드 밸런싱

간단한 구성으로 웹 응용 프로그램과 NTLM 인증 지원을로드 균형을 맞추기 위해 LSLB 기반 팜을 L4xNAT 프로필로 만들 수 있습니다. 우리는 HTTP 또는 HTTPS 프로토콜을 사용할 수 있습니다.

그런 다음 글로벌 구성에서 사용 된 프로토콜이 TCP 우리는 선택할 수 있습니다. NAT or DTA 필요한 토폴로지에 따라

. 서비스 섹션에서 특정 클라이언트에 대한 인증이 항상 동일한 백엔드로 이동하도록 지속성을 설정해야합니다. 그렇지 않으면 연결 인증을 수행 할 수 없습니다.

마지막으로 백엔드 목록을 추가하고 아래 절에서 설명한대로 상태 확인을 구성하십시오.

계층 7에서 NTLM로드 균형 조정

이 옵션을 사용하면 LSLB 모듈 및 HTTP 팜을 통해 구성된 계층 7 프록시를 사용하여 NTLM 지원과 함께 HTTP / S 데이터를 처리 할 수 ​​있습니다. 이를 위해 가상 서비스에 대한 SSL 요구 사항에 따라 HTTP 또는 HTTPS 용 팜을 만들어야합니다. 유일한 차이점은 경청자 에서 구성 전역 설정 생성 된 팜의

이 레이어에서는 응용 프로그램이 지속성 또는 연결 고정을 만들기 위해 아직 세션 쿠키를 만들 수 없으므로 쿠키 삽입 NTLM 인증의 초기 핸드 셰이크 중에로드 균형 조정 프로그램이 새 쿠키를 만들도록 허용하는 옵션입니다.

마지막으로 백엔드 목록을 추가하고 아래 절에서 설명한대로 상태 확인을 구성하십시오. 이 종류의 팜에 포함 된 프록시 수준에서 추가 응용 프로그램 옵션을 구성 할 수 있으며 NTLM 지원은 영향을받지 않습니다.

NTLM 인증 웹 사이트에 대한 고급 상태 검사

NTLM 인증 응용 프로그램에 대한 사용자 지정 고급 상태 확인을 생성하려면 경로 아래에 생성해야합니다. / usr / local / zevenet / app / libexec 아래와 같이 백엔드를 확인하는 스크립트입니다. 예를 들면 check_ntlm.sh 적절한 권한으로

#!/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

. 모니터링 >> Farmguardian 적용되는 경우 섹션에 추가하거나 명령에 추가하여 팜 서비스를 체크인하십시오.

다음을 실행하여 상태 검사 스크립트를 테스트 할 수 있습니다.

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

백엔드 IP가 무엇인지 알기. 192.168.0.99 항구는 80 HTTP, 존 도우 우리 도메인의 가짜 사용자입니다. 농담 더미 암호입니다. "/ my / uri" 검사 할 URI이며 "DOCTYPE HTML" 요청이 성공했을 때 응답 데이터에서 찾을 문자열입니다.

도메인에 로그인 할 수 있지만 권한이없는 더미 사용자를 생성하여 서비스 상태 확인에 포함하는 것이 좋습니다. 그것이 사용하는 이유입니다 존 도우 우리의 커스텀 헬스 체크에서 더미 사용자.

명령 줄에서 준비되고 준비가 완료되면 NTLM 지원으로 구성된 팜에 상태 검사를 할당 할 수 있습니다.

부하가 분산 된 NTLM 웹 응용 프로그램을 즐기십시오!

공유 :

GNU Free Documentation License의 조건에 따른 문서.

이 글이 도움 되었나요?

관련 기사