Kerberos가 포함된 Apache HTTP는 도메인 외부 시스템의 Chromium 기반 탐색기와 작동하지 않습니다.

Kerberos가 포함된 Apache HTTP는 도메인 외부 시스템의 Chromium 기반 탐색기와 작동하지 않습니다.

다음은 Apache HTTP Kerberos 모듈 구성입니다 /etc/apache2/sites-available/my.server.tld.conf.

# ...
<Location />
  Authname "SSO Authentication"
  AuthType Kerberos
  KrbAuthRealms MY.DOMAIN.TLD
  KrbServiceName HTTP/[email protected]
  Krb5Keytab /etc/apache2/kerb5.my.server.tld.ktab
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  Require valid-user
</Location>
# ...

Kerberos 구성은 다음과 같습니다 /etc/krb5.conf.

[libdefaults]
  default_realm = MY.DOMAIN.TLD

# ...

[realms]
  MY.DOMAIN.TLD = {
    kdc = my.ad.server.1.tld
    kdc = my.ad.server.2.tld
    admin_server = my.ad.server.1.tld
  }

# ...

[domain_realm]
  friendly.domain.tld = MY.DOMAIN.TLD
  .friendly.domain.tld = MY.DOMAIN.TLD

# ...

Apache HTTP 웹 서버는 Debian GNU/Linux 10에 설치됩니다.

keytab 파일은 my.ad.server.1.tldWindows Server인 에서 ktpass명령을 사용하여 생성되었습니다.
이 구성을 사용하면 도메인에 있는 Windows 시스템의 Edge와 Firefox 모두에서 모든 것이 잘 작동합니다 MY.DOMAIN.TLD.

내 문제는 도메인 외부의 Windows 컴퓨터에서 Microsoft Edge(Chromium 엔진이 포함된 새로운 버전) 또는 Google Chrome을 사용하는 클라이언트에서 발생합니다.

에 처음 연결할 때 my.server.tld브라우저는 WWW-Authenticate: NegotiateWWW-Authenticate: Basic realm="SSO Authentication"헤더를 수신합니다.

Microsoft Edge에서는 Firefox와 달리 팝업되는 인증 대화 상자가 WWW-Authenticate: Negotiate브라우저의 인증 대화 상자가 아니라 Windows 인증 대화 상자이며, 입력하는 내용에 관계없이 작동하지 않습니다.

첫 번째 로그인 시도가 실패한 후 브라우저에서 두 번째 요청을 발행하고 이번에는 헤더만 수신합니다 WWW-Authenticate: Basic realm="SSO Authentication". 브라우저 인증 대화 상자가 나타나고 작동합니다. 내부를 추가로 탐색하면 my.server.tld백그라운드에서 많은 Windows 인증 대화 상자가 생성됩니다. 예를 들어 페이지에 이미지가 있으면 해당 이미지에 대한 인증 대화 상자가 표시됩니다.

Windows 시스템이 내부 네트워크에 연결되어 있고 MY.DOMAIN.TLDWindows 인증 대화 상자에서 도메인을 명시적으로 지정하면 제대로 작동한다는 것을 알았습니다(예 [email protected]: 사용자 이름).

위의 모든 내용을 염두에 두고 이제 궁금합니다.

  • Windows 시스템의 Windows 통합 인증 대화 상자에서 작동하도록 만드는 것이 실제로 가능합니까?
  • 인증에 도메인을 "강제" 사용하여 [email protected]도메인 외부 시스템 과 같이 도메인을 명시적으로 지정할 필요성을 무효화하는 방법이 있습니까 MY.DOMAIN.TLD?

default_domain = my.domain.tld나는 이미 Kerberos 영역 구성을 추가 하거나 kinitDebian GNU/Linux 10 서버에서 Kerberos TGT를 얻으려고 시도했지만 성공하지 못했습니다.

모든 상황 에서 Apache HTTP의 로그를 읽으면 LogLevel trace8Windows 인증 대화 상자가 팝업되는 동안 NTLM 토큰이 반환되어 제대로 작동하지 않는 것처럼 보입니다.

작동할 때

Firefox로 어디서나
또는
도메인 내부 컴퓨터, 내부 네트워크(Edge 또는 Chrome)
또는
도메인 외부의 컴퓨터, 외부 네트워크 및 사용 [email protected](Edge 또는 Chrome):

mod_authz_core.c(820): AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
src/mod_auth_kerb.c(1963): kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
src/mod_auth_kerb.c(1296): Acquiring creds for HTTP/my.server.tld
src/mod_auth_kerb.c(1719): Verifying client data using KRB5 GSS-API
src/mod_auth_kerb.c(1735): Client didn't delegate us their credential
src/mod_auth_kerb.c(1754): GSS-API token of length 180 bytes will be sent back
mod_authz_core.c(820): AH01626: authorization result of Require valid-user : granted
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: granted

작동하지 않을 때

도메인 외부 컴퓨터, 외부 네트워크(Edge 또는 Chrome):

mod_authz_core.c(820): AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
mod_authz_core.c(820): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
src/mod_auth_kerb.c(1963): kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
src/mod_auth_kerb.c(1296): Acquiring creds for HTTP/my.server.tld
src/mod_auth_kerb.c(1719): Verifying client data using KRB5 GSS-API
src/mod_auth_kerb.c(1735): Client didn't delegate us their credential
src/mod_auth_kerb.c(1763): Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
src/mod_auth_kerb.c(1156): GSS-API major_status:00010000, minor_status:00000000
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)

이 모든 것 중 짜증나는 부분은 Firefox에서는 완벽하게 작동하지만 최신 Chromium 엔진을 사용하는 브라우저에서는 작동하지 않는다는 것입니다. 기본 인증이 아닌 NTLM 인증으로 대체되기 때문인가요?

답변1

내가 틀렸을 수도 있지만 내비게이터는 신뢰할 수 있는 사이트에만 Kerberos 자격 증명을 보냅니다. 따라서 도메인에 있는 컴퓨터의 경우 해당 탐색기는 웹 서버를 "인트라넷" 사이트로 간주합니다(= 신뢰할 수 있음, = 자격 증명을 보낼 수 있음). 그러나 다른 경우에는 웹 서버의 자격 증명 요청이 무시됩니다. 그렇다면 외부 컴퓨터의 신뢰할 수 있는 사이트에 웹 서버의 FQDN을 추가하면 문제가 해결될 수 있을까요?

관련 정보