Предоставить значимую ошибку от NSUrlConnection didReceiveAuthenticationChallenge
Я работаю с образцом OWASP для закрепления сертификатов и открытых ключей. Образец использует http://www.random.org/, и http://www.random.org/ недавно получил новый сертификат. Это означает connection:didReceiveAuthenticationChallenge:
терпит неудачу. Это ожидается и хорошо:)
Однако ошибка отображается как "NSURLErrorDomain" с кодом -1012. Это не очень полезно, и пользователь не сможет ничего с этим сделать:
Было бы намного лучше предоставить сообщение с текстом, похожим на "Предупреждение: открытый ключ, идентифицирующий веб-сайт, изменился...".
Еще одна маленькая гнида: в connection:didFailWithError:
, Я не могу сказать, является ли -1012 из-за сбоя пиннинга или другой сетевой ошибки. Поэтому я хотел бы предоставить сообщение только для сбоя сертификата, а не другие ошибки -1012.
Как предоставить "богатую информацию об ошибках" для вызова [[challenge sender] cancelAuthenticationChallenge: challenge]
(который называется когда connection:didReceiveAuthenticationChallenge:
терпит неудачу). Ссылка на протокол NSURLConnectionDelegate и ссылка на протокол NSURLAuthenticationChallengeSender не упоминают, как это сделать.
1 ответ
Попробуй использовать
NSString * alertMessage = [challenge.error localizedFailureReason];
чтобы получить читаемую человеком информацию об ошибках.
См. Документацию для NSError и NSURLAuthenticationChallenge.