Предоставить значимую ошибку от 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.

Другие вопросы по тегам