해당 지역의 curl
에 기고가되어 한 번 참여하고 있습니다. 여기에 알아 두어야 할 사항이 있습니다.
curl(1)
자체는 Kerberos에 대해 전혀 모르고 있으며 자격증 명 캐시 나 키탭 파일과 상호 작용하지 않습니다. 모든 호출을 GSS-API 구현에 위임하여 마법을 수행합니다. 어떤 마법은 도서관, Heimdal 및 MIT Kerberos에 달려 있습니다.
귀하의 질문에 근거하여 귀하는 Kerberos에 대한 지식이 거의없고 SPNEGO가 확보 한 REST 엔드 포인트에 대한 API 호출을 자동화하기를 원합니다.
- 는
- 확인
- 적어도 MIT Kerberos를 1.11
- MIT에서 Kerberos에 대해 적어도
curl
7.38.0을 설치합니다 유닉스 계열 OS 유무 : 여기 은 당신이해야 할 것입니다 이 curl --version
은 GSS-API 및 SPNEGO이고 MIT Kerberos 버전과 연결된 ldd
입니다.
- 은 티켓 캐시를 가지고
klist
으로 확인 kinit -k -t <path-to-keytab> <principal-from-keytab>
- 하여 해당 클라이언트 키 탭으로 TGT를 얻기 위해
ktutil
또는 mskutil
- 시도와 서비스 주체의 클라이언트 키 탭 만들기
환경 준비 완료 :
- 수출
KRB5CCNAME=<some-non-default-path>
- 수출
KRB5_CLIENT_KTNAME=<path-to-keytab>
- 호출
curl --negotiate -u : <URL>
MIT Kerberos는, 당신의 키 탭으로 TGT를 얻을 자동으로 그들을 검사, 두 환경 변수가 설정되어 있는지 감지 서비스 티켓을 요청하고 curl
에 전달합니다. 너 끝났어.
참고 : Heimdal에서는 작동하지 않습니다.
curl은 유닉스에서'** KRB5CCNAME' 변수를 사용하거나 기본적으로 FILE :/tmp/krb5cc _ $ (id -u)'캐시에서 유효한 티켓 **을 얻으려고 시도합니다. on Windows) - 티켓 작성 방법에 상관하지 않습니다. –
경고 : Windows 버전의 컬은 Hadoop REST 서비스에 필요한 GSSAPI 라이브러리가 아닌 Microsoft SSPI 라이브러리를 지원하도록 컴파일됩니다. –
BTW 키 탭은 리눅스에서'ktutil' 또는'ktpass.exe'와 같은 Active Directory 유틸리티에 의해 생성 된 해쉬 패스워드를 담고있는 파일입니다. 그것은 ** 생성 된 것이 아니라'kinit'에 ** 사용됩니다 **. –