2

클라이언트가 HTTP 프록시에 자신을 인증하려고한다고 가정 해 봅시다. 프록시는 kerberos로 구성되며 명확하게 서비스 이름 HTTP/proxy.foo.bar이 configs에 설정되어 있습니다. 고객은 티켓을 요청할 서비스 이름을 어떻게 알 수 있습니까? 그가 요청한 도메인 이름 (이 경우에는 proxy.foo.bar)에 티켓을 요청하거나이 경우 407 개의 응답으로 인증 순서에서 이름을 수신합니까 (어떤 경우 협상 챌린지가 있지만, 조사 할 방법이 있는지 모르겠습니다.)kerberos : 티켓을 요청할 클라이언트가 서비스 이름을 아는 방법은 무엇입니까?

갑자기 인증을 중단 한 프록시에서 kerberos 오류를 디버그하려고합니다. 일부 클라이언트. 문제는 Wireshark를 보면 클라이언트가 프록시 (같은 이름의 웹 사이트)에 구성된 서비스 이름이 아닌 티켓을 요청한다는 것입니다. HTTP/proxy.foo.bar 프록시 IP가 해결할 이름, HTTP/host.foo.bar (글쎄, 적어도 프록시가 해결하는 이름 일 수도 있고 클라이언트가 일부 다른 웨이를 가져올 수도 있음), TGS는 찾을 수 없습니다. 하나, 따라서 오류가 발생합니다.

+0

만 * 표준 * DNS 항목, 즉 문제가 될 수있다 (즉, 누가 그 부르카 ?? 아래) –

+0

에서 DNS, proxy.foo.bar 및 host.foo.bar와 연관된 IP가 동일하거나 다를 수 있습니까? –

답변

2

여기에 두 가지 질문이 있습니다. 실제로 문제를 해결하는 방법을 묻지 않았습니다. 자세한 내용은 의견이 필요합니다.

  1. 당신은 프록시가 Kerberos를 구성 "를 요청하고,이 CONFIGS의 설정 명확하게 서비스 이름 HTTP/proxy.foo.bar 있습니다. 클라이언트는?에 티켓을 요청하는 서비스 이름을 알고 않는 방법 "

A.이 방법은 거의 비슷합니다. 클라이언트는 웹 브라우저에서 URL을 입력하거나 하이퍼 링크를 클릭합니다. URL의 호스트 이름과 일치하는 DNS 도메인의 IP 호스트를 찾습니다. 그런 다음 해당 IP 호스트로 이동하여 URL에 정의 된 서비스를 찾습니다.이 경우 HTTP 서비스입니다. 웹 서버에서 Kerberos로 보호되어 HTTP 401 Negotiate 챌린지 (401이 아니라 407)를 받으면 KDC로 이동하여 HTTP/proxy.foo.bar에 대한 Kerberos 서비스 티켓을 요청합니다. to proxy.foo.bar를 실행하고 해당 호스트에서 실행중인 HTTP 서비스 티켓을 제공합니다. 호스트가이 티켓의 유효성을 검사하고 모든 것이 정상이고 클라이언트 웹 브라우저가 HTML을 렌더링하면. 클라이언트에서 klist를 실행할 때 Kerberos 티켓 티켓을 보았습니다. 나는 너를 위해 어떤 웹 참조도 가지고 있지 않다. 이것은 내 머리 꼭대기에서 떨어져있다.

  1. 는 또한 은 그가 (이 경우는 proxy.foo.bar이 참)하거나에서, 인증 시퀀스에서 이름을받을 않습니다에 요청을 만들고 도메인 이름에 티켓을 요청 하는가 "요청 이 경우에는 407 개의 답변 (협상 챌린지가 있지만, 조사 할 방법이 있는지 모르겠습니다)이 있습니까? "

A. 귀하의 질문은 따라 약간 어려웠다하지만 제대로 이해하고 있다면, 대답은 웹 클라이언트가 HTTP 401의 결과로 티켓을 요청입니다 (웹 서버에서 인증 요청을 협상 위 참조).

많은 다이어그램의 순서는 여기에 포함하여 웹에이 과정을,있다 : 기본 Kerberos를 신뢰하여 http://www.zeroshell.org/kerberos/Kerberos-operation/