2013-03-26 44 views
8

Tôi đang cố gắng xác thực chứng chỉ máy chủ trong ứng dụng iOS.willSendRequestForAuthenticationChallenge không được gọi là

Phương pháp đại biểu Tôi gặp một vấn đề với là:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 

Phương pháp này được gọi khi tôi sử dụng một máy chủ như "https://twitter.com".

Nhưng, khi tôi trỏ nó đến máy chủ sản xuất của mình (Government CA), phương pháp này đơn giản là không được gọi. Bạn có thể coi đây là chứng chỉ tự ký, vì nếu bạn không cài đặt chứng chỉ gov, bạn sẽ nhận được thông báo "Kết nối này không tin cậy" trong trình duyệt.

Có cách nào để buộc willSendRequestForAuthenticationChallenge được gọi và kiểm tra chứng chỉ tự ký không?

Cảm ơn!

+0

Bạn có gặp bất kỳ giải pháp nào cho vấn đề này không? Tôi đang đối mặt với nhau và đại biểu này không được gọi ngay cả sau 10 phút. – Maverick

Trả lời

6

Câu hỏi đã được hỏi một lúc trước nhưng tôi nghĩ tôi sẽ đưa ra câu trả lời cho mọi người đến.

Vì tôi hiểu thử thách xác thực chỉ được gọi một lần cho mỗi máy chủ cứ 10 phút một lần. Kết quả của thử thách là nhận được bộ nhớ đệm cho hiệu suất. Bộ nhớ cache sẽ hết hạn sau 10 phút. (http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake)

Sự thấu hiểu tốt được đưa ra ở đây bởi jblack người có tham chiếu đến các diễn đàn của Apple: How to cancel a persistent connection using NSURLConnection?

Khi tôi đã có một câu hỏi tương tự và một vấn đề, điều mà vấp tôi là tôi đã sử dụng cùng một máy chủ cho nhiều hoạt động trong ứng dụng, vì vậy thách thức đã được chấp nhận ở nơi khác nhưng chưa hết hạn trước khi NSURLConnection của tôi bị sa thải, do đó tôi chưa bao giờ có thách thức (không cần).

Cố gắng cách ly máy chủ với yêu cầu này và sau đó bạn sẽ nhận được cuộc gọi lại.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan