我一直在試圖實現一種方法來使用NSURLSession在我的iOS 8+應用中進行公鑰固定。AuthenticationMethodServerTrust在iOS中爲零9
我只是實現委託方法didReceiveChallenge並獲取challenge.protectionSpace.authenticationMethod並檢查它是否等於NSURLAuthenticationMethodServerTrust。
如果它等於NSURLAuthenticationMethodServerTrust我檢查證書並將其與本地副本進行比較。
這適用於iOS 8但適用於iOS 9我沒有收到與NSURLAuthenticationMethodServerTrust相同的驗證方法。我收到NSURLAuthenticationMethodClientCertificate,因此我無法訪問challenge.protectionSpace.serverTrust屬性。
任何想法?
public func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)
{
if(challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust)
{
// Verify the identity of the server
println("Trusted")
return challenge.sender.performDefaultHandlingForAuthenticationChallenge!(challenge)
}
println("Not trusted")
return challenge.sender.cancelAuthenticationChallenge(challenge)
}
}
檢查http://stackoverflow.com/questions/33542003/client-certificate-authentication-in-swift2/34014653#34014653鏈接。這可能會有所幫助。 – Karlos
嗨卡洛斯,這對我來說不行。 :-(我有同樣的問題,維克多。 –