2016-07-21 18 views
7

documentation 다음 보여준다--negotiate with curl을 사용할 때 keytab 파일이 필요합니까? 엔드 포인트를 고정 된 Kerberos를 연결하는 방법을 설명

curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..." 

-u 플래그가 제공되어야하지만, 말림에 의해 무시된다.

--negotiate 옵션을 사용하면 curl이 kinit 명령으로 미리 생성 된 키탭을 찾지 않거나 자격 증명을 묻는 메시지가 표시됩니까?

키탭 파일을 찾으면 어떤 파일 이름을 찾고 있습니까?

+1

curl은 유닉스에서'** KRB5CCNAME' 변수를 사용하거나 기본적으로 FILE :/tmp/krb5cc _ $ (id -u)'캐시에서 유효한 티켓 **을 얻으려고 시도합니다. on Windows) - 티켓 작성 방법에 상관하지 않습니다. –

+0

경고 : Windows 버전의 컬은 Hadoop REST 서비스에 필요한 GSSAPI 라이브러리가 아닌 Microsoft SSPI 라이브러리를 지원하도록 컴파일됩니다. –

+0

BTW 키 탭은 리눅스에서'ktutil' 또는'ktpass.exe'와 같은 Active Directory 유틸리티에 의해 생성 된 해쉬 패스워드를 담고있는 파일입니다. 그것은 ** 생성 된 것이 아니라'kinit'에 ** 사용됩니다 **. –

답변

16

해당 지역의 curl에 기고가되어 한 번 참여하고 있습니다. 여기에 알아 두어야 할 사항이 있습니다.

curl(1) 자체는 Kerberos에 대해 전혀 모르고 있으며 자격증 명 캐시 나 키탭 파일과 상호 작용하지 않습니다. 모든 호출을 GSS-API 구현에 위임하여 마법을 수행합니다. 어떤 마법은 도서관, Heimdal 및 MIT Kerberos에 달려 있습니다.

귀하의 질문에 근거하여 귀하는 Kerberos에 대한 지식이 거의없고 SPNEGO가 확보 한 REST 엔드 포인트에 대한 API 호출을 자동화하기를 원합니다.

  1. 확인
  2. 적어도 MIT Kerberos를 1.11
  3. MIT에서 Kerberos에 대해 적어도 curl 7.38.0을 설치합니다 유닉스 계열 OS 유무 : 여기

    은 당신이해야 할 것입니다 이 curl --version은 GSS-API SPNEGO이고 MIT Kerberos 버전과 연결된 ldd입니다.
  4. 은 티켓 캐시를 가지고 klist으로 확인 kinit -k -t <path-to-keytab> <principal-from-keytab>
  5. 하여 해당 클라이언트 키 탭으로 TGT를 얻기 위해 ktutil 또는 mskutil
  6. 시도와 서비스 주체의 클라이언트 키 탭 만들기

환경 준비 완료 :

  1. 수출 KRB5CCNAME=<some-non-default-path>
  2. 수출 KRB5_CLIENT_KTNAME=<path-to-keytab>
  3. 호출 curl --negotiate -u : <URL>

MIT Kerberos는, 당신의 키 탭으로 TGT를 얻을 자동으로 그들을 검사, 두 환경 변수가 설정되어 있는지 감지 서비스 티켓을 요청하고 curl에 전달합니다. 너 끝났어.

참고 : Heimdal에서는 작동하지 않습니다.

3
  1. 확인 컬 버전

    $ curl -V - 그것은 기능을 지원한다

  2. 로그인 kinit

    사용 "GSS는-협상"$ kinit <user-id>

  3. 사용

    $ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus

    는 "--negotiate"옵션 SPNEGO

    수 있습니다

    "-u"옵션 (kinit를하는 동안 지정한 원리를 사용)

    "-b"& "-c"필요하지만 무시된다 옵션은 http 쿠키를 저장하고 전송하는 데 사용됩니다.

+0

이 버전이 모두 7.38.0보다 이전 버전이기 때문에'GSS-Negotiate'를 지원해서는 안됩니다. 그것은'SPNEGO'를 지원해야합니다. –

+0

이것은 잘 작동하며, 허용되는 대답보다 설정/문제가 훨씬 적습니다. 컬 7.35.0, SPNEGO 없음, GSS- 협상 만. – BobDoolittle

+0

기본 연결 테스트에 쿠키 옵션이 필요합니까? 그렇다면 왜? – peedee