
내 고객은 내 Linux 기반 웹/응용 프로그램 서버에 대한 Windows 도메인의 SSO를 요구합니다. 서버에는 자체 키탭이 설치되어 있으며 모두 잘 작동합니다. Windows 도메인(EXAMPLE.ORG)에는 SPN HTTP/server.example.org가 연결된 서비스 사용자 계정이 있습니다. 내 응용 프로그램 서버(WildFly)는 Kerberos 인증을 요구하고 NTLM 인증을 거부합니다.
기본 설정으로 생성된 테스트 도메인(2016 기반)이 있습니다. 테스트 도메인에서 이 설정을 반복하려고 하는데 Kerberos가 작동하지 않습니다. 서버에서 협상 요청을 보았지만 클라이언트는 항상 NTLM 티켓을 반환합니다.
WWW-Authenticate: Negotiate (request)
Authorization: Negotiate TlRMTVNTU..... (reply)
고객 인프라에서는 Kerberos 티켓과 동일한 내용을 볼 수 있습니다.
WWW-Authenticate: Negotiate (request)
Authorization: Negotiate YIIHmAYGKw.... (reply)
내가 본 유일한 차이점(GPO 제외)은 내 SPN이 동일한 DNS 도메인 내에 있지 않다는 것입니다. 내 AD 도메인은 tdm.sample.org이고 서버는 server.sample.org입니다. 그게 중요한지는 모르겠습니다.
얼마 전에 도메인 내에서도 같은 문제가 발생했습니다. IE 클라이언트와 IIS가 동일한 도메인에 가입된 Windows Server 2016 모두 NTLM을 사용하고 있었습니다.
클라이언트의 승인 여부를 규제하는 GPO 설정이 거의 없다고 생각하지만 내가 읽은 문서 중 어느 것도 도움이 되지 않았습니다.
Kerberos 클라이언트 인증에 어떤 제한이 있는지 명확한 설명이 있거나 적용할 수 있는 힌트나 디버깅 전략이 있습니까?
답변1
Windows가 Kerberos 인증을 시도하지 않는 경우 몇 가지 제한 사항이 있습니다.
1. SPN은 웹 별칭이 아닌 PTR을 가리킵니다.
도메인 구성원이 아닌 웹 서버에 별칭이 있는 경우 해당 별칭에 SPN을 할당할 필요가 없습니다. 해당 서버의 실제 DNS 레코드와 비교하여 확인됩니다.
당신이 이것을 가지고 있다고 가정 해 봅시다 :
A record server.example.org -> 10.0.0.1
PTR record 10.0.0.1 -> server.example.org
CNAME record webapp.example.org -> server.example.org
접근 중webapp.example.orgSPN이 필요하지 않습니다HTTP/webapp.example.org, 할당해야 합니다HTTP/server.example.org서비스 기록에만 해당됩니다. PTR 레코드도 없으면 IP 주소여야 한다고 생각합니다.
2. 도메인 회원은 다른 이름으로 불려서는 안 됩니다.
IIS 및 Windows 통합 인증이 활성화된 도메인 구성원 서버가 있습니다. 내 네트워크 설정으로 인해 비도메인 네트워크와 도메인 네트워크 모두에 DNS 설정이 있습니다.
srv.example.org -> 10.0.0.1
10.0.0.1 -> srv.example.org
또한 도메인에도 등록되었습니다.
srv.tdm.example.org -> 10.0.0.1
이 서버는 srv.example.org로 액세스되는 경우 Kerberos를 허용하지 않으며, Kerberos는 srv.tdm.example.org로 액세스되는 경우에만 작동합니다. IP 주소를 통해 액세스하는 경우에도 작동하지 않습니다.
나는 일반적으로 DNS 이전에 발생하는 도메인의 Windows 이름 확인으로 인해 이러한 사실이 발생했다고 생각합니다.
계속 검색하고 이 답변을 업데이트하겠습니다.