2013-02-25 10 views
5

sto lavorando con il campione di OWASP per Certificate and Public Key Pinning. L'esempio utilizza random.org e random.org ha recentemente ottenuto un nuovo certificato. Ciò significa che connection:didReceiveAuthenticationChallenge: non funziona. Che ci si aspetta e buona :)Fornire errore significativi da NSURLConnection didReceiveAuthenticationChallenge

Tuttavia, il fallimento viene visualizzato come "NSURLErrorDomain", con un codice di -1012. Questo non è molto disponibile, e l'utente non sarà in grado di fare qualcosa di significativo con esso:

enter image description here

Sarebbe molto meglio per la fornitura di un messaggio con il testo simile a "Attenzione: la chiave pubblica che identifica il sito web è cambiato...".

Un altro piccolo problema: in connection:didFailWithError:, non riesco a capire se il -1012 sia dovuto a un errore di pinning oa un altro errore di rete. Quindi vorrei fornire il messaggio solo per l'errore del certificato e non altri errori -1012.

Come viene fornita una "informazione di errore completo" alla chiamata di [[challenge sender] cancelAuthenticationChallenge: challenge] (che viene chiamata quando connection:didReceiveAuthenticationChallenge: non riesce). NSURLConnectionDelegate Protocol Reference e NSURLAuthenticationChallengeSender Protocol Reference non menzionare come farlo.

+0

Molto buona domanda, qualche tempo fa ho avuto esattamente lo stesso problema, ma non ero veramente in grado di recuperare più informazioni di -1012. Ho optato per il messaggio generico che diceva all'utente che il certificato non corrispondeva. – lawicko

+0

Ciao lawicko. Stavo pensando di provare a lanciare un'eccezione con le informazioni sull'errore. A quanto ho capito, le eccezioni dell'obiettivo C non sono come le eccezioni di altre lingue. Hai provato un'eccezione Objective C in questo caso? – jww

+0

A mio parere, il problema qui è come ottenere ulteriori informazioni sull'errore, non su come elaborarlo in seguito. Così, si ottiene solo il maledetto -1012 senza sapere qual è la causa underlaying, sulla base che non si può davvero dire se era a causa del fallimento certificato o qualche altro problema, o almeno io non sono riuscito a recuperare queste informazioni. Non capisco esattamente come lanciare un'eccezione a quel punto possa aiutare con il problema originale? – lawicko

risposta