didReceiveAuthenticationChallenge не вызывается - PullRequest
6 голосов
/ 04 ноября 2011

Я использую iOS sdk5.0. Я нажимаю на ссылку, используя NSURLConnection и создаю запрос. Но мой контроль не входит в метод didReceiveAuthenticationChallenge. Разве ReceptionAuthenticationChallenge не вызывается в iOS5.0?

Ответы [ 3 ]

14 голосов
/ 04 ноября 2011

В соответствии с Документами из NSURLConnectionDelegate

connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:

устарели, и новый код должен принять

connection:willSendRequestForAuthenticationChallenge

Старшие делегаты все равно будут вызываться для совместимости, но требуют больше времени для решения проблемы аутентификации.

1 голос
/ 28 ноября 2012

У меня была такая же проблема (см. Мой комментарий выше).В своих поисках я наткнулся на эту суть: https://gist.github.com/1675763.Я попробовал код в пути AUTH_NEW.Делегата все еще не вызывали.Затем я заметил комментарий в строке 40: «Возможно, iOS 5 не может поддерживать алгоритм подписи DSA».

Я провел несколько поисков и не нашел ничего, что указывало бы на то, что это ограничение было проблемой.Наконец, в отчаянии я изменил это.Я использовал инструмент Java Keytool (переизобретенная версия Java openssl +) для создания моего самоподписанного сертификата.Он использует DSA по умолчанию.В отчаянии я использовал флаг, чтобы заставить его использовать RSA.Затем был вызван делегат, и код, приведенный выше, сработал.

Мне еще предстоит увидеть документацию, в которой говорится, что вы не можете использовать DSA.Похоже, что openssl использует RSA по умолчанию, поэтому люди, использующие это, вероятно, никогда не сталкивались с этим.

Краткая история: проверьте свой сертификат и убедитесь, что он подписан с RSA, а не с DSA.

0 голосов
/ 21 февраля 2013

Я бы хотел подчеркнуть мысль Криса Вестина.Кроме того, я фактически создал ключ RSA, но случайно скопировал ключ DSA на сервер.Поэтому, если вы сомневаетесь, вам нужно использовать команду -v (verbose), чтобы убедиться, что у вас есть соответствующий сертификат.Пример:

keytool -list -v -keystore <name of keystore here>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...