NSURLConnection не вызывает методы аутентификации NSURLConnectionDelegate после HTTP 401

Я использую веб-службу, которая использует базовую аутентификацию HTTP с расширением NSURLConnection. В моем NSURLConnectionDelegate я реализовал –[NSURLConnectionDelegate connection:canAuthenticateAgainstProtectionSpace:], –[NSURLConnectionDelegate connection:didCancelAuthenticationChallenge:] и –[NSURLConnectionDelegate connection:didReceiveAuthenticationChallenge:], но ни один из них не вызывается.

Я пытался реализовать –[NSURLConnectionDelegate connectionShouldUseCredentialStorage:] для возврата как YES, так и NO, но это не дало никакого эффекта.

Я также убедился, что мой NSURLCredentialStorage пуст.

Наконец, вместо реализации –[NSURLConnectionDelegate connection:canAuthenticateAgainstProtectionSpace:], –[NSURLConnectionDelegate connection:didCancelAuthenticationChallenge:] и –[NSURLConnectionDelegate connection:didReceiveAuthenticationChallenge:] я реализовал –[NSURLConnectionDelegate connection:willSendRequestForAuthenticationChallenge:], но и он не вызывался.

Что я могу сделать, чтобы NSURLConnection вызывал обратные вызовы аутентификации NSURLConnectionDelegate?


person Heath Borders    schedule 19.06.2013    source источник


Ответы (1)


Мой HTTP-сервер не возвращает заголовок WWW-Authenticate.

Ответ моего сервера:

HTTP/1.1 401 Unauthorized
Date: Wed, 19 Jun 2013 14:43:30 GMT
Server: Apache-Coyote/1.1
Expires: Wed, 19 Jun 2013 14:43:30 GMT
Vary: Accept-Encoding,User-Agent
Cache-Control: no-store, no-cache, must-revalidate, private, max-age=0
Content-Length: 0
Content-Type: text/plain

Другой ответ сервера с заголовком WWW-Authenticate:

HTTP/1.1 401 Authorization Required
Date: Wed, 19 Jun 2013 14:44:47 GMT
Server: Apache/2.2.17 (CentOS)
WWW-Authenticate: Basic realm="[LDAP/PROD] Active Directory"
Content-Length: 0
Connection: close
Content-Type: text/plain

Похоже, что NSURLConnection требует заголовка WWW-Authenticate в своем ответе, чтобы вызывать обратные вызовы аутентификации NSURLConnectionDelegate.

Я сообщил об этом. Пожалуйста, продублируйте его.

По-видимому, мне придется вручную установить заголовок Authorization, поскольку NSURLConnection не позволит вам для активной аутентификации с помощью NSURLCredential.

person Heath Borders    schedule 19.06.2013