iOS: триггер NSURLErrorServerCertificateUntrusted вместо NSURLErrorCancelled при сбое AuthenticationChallenge - PullRequest
0 голосов
/ 20 мая 2019

Я обрабатываю запрос аутентификации доверия сервера нестандартным способом (сравнивая открытый ключ из доверия сервера с хешированной локальной версией) через urlSessionDelegate, аналогично тому, как это делается здесь: Как принять самозаверяющий SSL-сертификат, используя NSURLSession iOS 7 и его семейство методов делегатов для целей разработки?

Как описано в документации , яНужно отменить вызов, если я хочу, чтобы сервер не прошел проверку подлинности доверия.При этом моя задача с данными будет завершена с NSURLErrorCancelled.У меня есть некоторые классы обработки ошибок, которые смотрят на результат NSURLError, возвращаемый задачей данных, и для меня было бы намного чище, если бы вместо этого я получил NSURLErrorServerCertificateUntrusted.

Есть ли способ достичь этого?Или эти ошибки сервера будут перенаправляться только тогда, когда аутентификация обрабатывается автоматически, без методов делегата?

1 Ответ

1 голос
/ 21 мая 2019

Может ли нормальная обработка соответствующего сертификата завершиться с этой ошибкой?

Если это так, вы могли бы использовать NSURLSessionAuthChallengePerformDefaultHandling в этом случае.

Если нет, я думаю, что единственный способ связан сдурачиться с отправителем вызова, что крайне обескураживает, хотя это может быть не катастрофическим, если вы вызовете это, а затем вызовете правильный обработчик завершения.Однако есть большая вероятность, что вы получите два обратных вызова.Я никогда не пытался это сделать.

Мой совет - отправить Apple сообщение об ошибке с просьбой указать правильный API для передачи ошибки NSE вместе с отменой.

...