Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

이 글에서는 Windows Server 2012 R2에서 실행 중인 IIS 웹 사이트에 투명한 SSO(Single Sign-On) Kerberos 도메인 사용자 인증을 구성하는 방법을 단계별로 자세히 안내합니다. Active Directory 환경에서 사용자에게 자격 증명 입력 없이 원활한 로그온 경험을 제공하고 싶다면 아래 절차를 순서대로 따라 해 보세요.

1단계. IIS 인증 방식 변경

웹 서버에서 IIS 관리자를 실행하고 대상 웹 사이트를 선택한 뒤 인증(Authentication) 섹션으로 이동합니다. 기본적으로 익명 인증(Anonymous Authentication)만 활성화되어 있는 것을 확인할 수 있습니다. IIS는 항상 익명 인증을 우선적으로 시도하기 때문에, 익명 인증을 비활성화하고 Windows 인증(Windows Authentication)을 활성화해야 합니다.

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

2단계. 인증 공급자 확인

Windows 인증에서 사용 가능한 공급자 목록(공급자(Providers))을 열어봅니다. 기본적으로 NegotiateNTLM 두 가지 공급자가 제공됩니다.

  • Negotiate: 컨테이너 역할을 하는 공급자로, 첫 번째 인증 수단으로 Kerberos를 시도하고 실패할 경우 NTLM으로 대체됩니다.
  • NTLM: Kerberos를 사용할 수 없는 경우의 폴백(fallback) 인증 방식입니다.

Kerberos 인증이 정상적으로 동작하려면 공급자 목록에서 Negotiate가 반드시 맨 앞에 위치해야 합니다.

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

3단계. SPN(Service Principal Name) 등록

다음 단계는 사용자가 접속할 웹 사이트 이름에 대한 SPN(Service Principal Name) 항목을 등록하는 것입니다.

  • 웹 사이트가 서버 자체의 이름으로만 접근한다면(https://server-name 또는 https://server-name.adatum.loc) 별도의 SPN을 만들 필요가 없습니다. AD의 서버 계정에 이미 SPN 항목이 존재하기 때문입니다.
  • 반면 웹 사이트 주소가 호스트 이름과 다르거나, 로드 밸런싱이 적용된 웹 팜(web farm) 환경을 구축하는 경우에는 추가 SPN 항목을 서버 또는 사용자 계정에 연결해야 합니다.

전용 서비스 계정 생성

IIS 서버 팜을 운영하는 경우라면 별도의 AD 계정을 만들어 SPN을 바인딩하는 것이 가장 좋은 방법입니다. 웹 사이트의 응용 프로그램 풀이 이 계정으로 실행되기 때문입니다.

먼저 도메인 계정 iis_service를 생성하고, 해당 개체에 SPN이 할당되어 있지 않은지 확인합니다(servicePrincipalName 속성이 비어 있어야 합니다).

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

SPN 등록 명령 실행

웹 사이트가 https://webportalhttps://webportal.adatum.loc 주소로 응답해야 한다고 가정하겠습니다. setspn 명령으로 서비스 계정의 SPN 속성에 이 주소들을 등록합니다.

Setspn /s HTTP/webportal adatum\iis_service
Setspn /s HTTP/webportal.adatum.loc adatum\iis_service

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

이렇게 하면 사용자가 해당 주소로 접속할 때 이 계정이 Kerberos 티켓을 해독하고 세션을 인증할 수 있게 됩니다.

등록된 SPN 설정은 다음 명령으로 확인할 수 있습니다.

setspn /l iis_service

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

팁: 동일한 SPN이 서로 다른 도메인 개체에서 사용되면 Kerberos가 정상적으로 작동하지 않습니다. 다음 명령으로 도메인 내에 중복된 SPN이 없는지 반드시 점검하세요.

setspn –x

4단계. 응용 프로그램 풀 ID 변경

이제 IIS 응용 프로그램 풀이 앞서 생성한 계정으로 실행되도록 구성합니다.

  1. 웹 사이트의 응용 프로그램 풀을 선택합니다(예제에서는 DefaultAppPool).
  2. 고급 설정(Advanced Settings)을 열고 ID(Identity) 항목으로 이동합니다.
  3. ApplicationPoolIdentityadatum\iis_service로 변경합니다.

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

5단계. useAppPoolCredentials 설정

IIS 관리자에서 웹 사이트를 선택한 후 구성 편집기(Configuration Editor)를 엽니다. 드롭다운 메뉴에서 다음 경로로 이동합니다.

system.webServer > security > authentication > windowsAuthentication

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

useAppPoolCredentials 값을 True로 변경합니다. 이 설정을 통해 IIS가 클라이언트로부터 받은 Kerberos 티켓을 해독할 때 응용 프로그램 풀의 도메인 계정을 사용하게 됩니다.

6단계. IIS 재설정 및 전체 팜 적용

변경 사항을 적용하기 위해 다음 명령으로 IIS를 재시작합니다.

iisreset

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

웹 팜 환경이라면 위의 모든 구성을 팜에 속한 모든 서버에 동일하게 적용해야 합니다.

7단계. Kerberos 인증 테스트

클라이언트 브라우저에서 https://webportal.adatum.loc에 접속하여 자격 증명 입력 없이 로그인되는지 확인합니다.

참고: IE11에서는 처음부터 인증이 되지 않을 수 있습니다. 이 경우 해당 주소를 신뢰할 수 있는 사이트 목록에 추가하고, 신뢰할 수 있는 사이트 영역 설정의 사용자 인증 → 로그온에서 현재 사용자 이름 및 암호로 자동 로그온 옵션을 지정해야 합니다.

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드

Fiddler로 Kerberos 적용 여부 검증

HTTP 트래픽 모니터링 도구인 Fiddler를 사용하면 웹 사이트에서 실제로 Kerberos 인증이 사용되고 있는지 확인할 수 있습니다.

  1. Fiddler를 시작하고 브라우저에서 대상 웹 사이트를 엽니다.
  2. 왼쪽 패널에서 해당 웹 사이트 접속 세션을 찾아 선택합니다.
  3. 오른쪽 패널의 Inspectors 탭으로 이동합니다.

"Authorization Header (Negotiate) appears to contain a Kerberos ticket"라는 메시지가 표시되면, IIS 웹 사이트 인증에 Kerberos가 성공적으로 사용된 것입니다.

IIS 웹 사이트에서 Kerberos 인증(SSO) 구성 완벽 가이드