Я бы хотел, чтобы libcurl вернулся в NTLM, когда kerberos недоступен.libcurl обсудить fallback to ntlm
Я использую эту установку,
// explicit
curl_easy_setopt(_curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_GSSNEGOTIATE);
// or any
curl_easy_setopt(_curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
, что на самом деле происходит, является то, что сервер посылает поддерживаемые схемы
<= recv header: HTTP/1.1 401 Unauthorized
<= recv header: Content-Length: 0
text: Server Microsoft-HTTPAPI/2.0 is not blacklisted
<= recv header: Server: Microsoft-HTTPAPI/2.0
<= recv header: WWW-Authenticate: Negotiate
<= recv header: WWW-Authenticate: NTLM
но клиент отправляет только Обсуди маркер
text: Server auth using GSS-Negotiate with user ''
=> send header: POST /daas/services/hello HTTP/1.1
Authorization: Negotiate YHkGBisGAQUFAqBvMG2gMDAuBgorBgEEAYI3AgIKBgkqhkiC9xI...TC1NT0JMR0VS
User-Agent: libcurl-agent/1.0
Host: localhost:8008
Accept: */*
Content-Length: 328
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------19e8c490d70b39c1
....
Поскольку я еще не определил SPN, я ожидаю, что NTLM будет работать, но я получаю это
<= recv header: HTTP/1.1 401 Unauthorized
<= recv header: Content-Length: 0
text: Server Microsoft-HTTPAPI/2.0 is not blacklisted
<= recv header: Server: Microsoft-HTTPAPI/2.0
text: Authentication problem. Ignoring this.
<= recv header: WWW-Authenticate: Negotiate oYIBHDCCAAAAPRwBFAFIAAgAEA.....BvAG0ABQAcAGMAb
<= recv header: Date: Fri, 26 Sep 2014 16:16:24 GMT
text: HTTP error before end of send, stop sending
<= recv header:
text: Closing connection 2
Я думал, что клиент должен отправить несколько возможных токенов и позволить серверу выбрать, на что ответить.
Любые идеи?
Согласованный; что соответствует моему опыту, но любой клиент, который не способен *, должен * просто перейти к NTLM. Я видел несколько клиентов, которые неправильно настроены таким образом, что считают, что они могут выполнять krb5, но не могут (например, перекос времени). –
Не так, серверная сторона поддерживает оба метода проверки подлинности, SPN доступен для полного имени хоста, но с использованием IP или псевдонима без SPN вызывает сбой. хотя, если я попробую завиток использовать только NTLM, он отлично работает. в чем смысл битовой маскировки методов auth, если они не используются в качестве резервной копии? – ren
Если у вас нет SPN, то у вас нет доверительных отношений с сервером Kerberos. Это не имеет никакого отношения к IP-адресам или разрешению имен. Вам не хватает сертификата, и вы не можете выполнять Kerberos. Нет никакого отступления от «Я сказал, что могу выполнять переговоры, но на самом деле я не могу». –