Я пытаюсь реализовать способ фиксации открытого ключа в моем приложении iOS 8+ с использованием NSURLSession.AuthenticationMethodServerTrust - это nil в iOS 9
Что я делаю, просто реализую метод делегата didReceiveChallenge и получаю вызов.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
Привет, Карлос, Это не работает для меня. :-(У меня такая же проблема, что и у Виктора. –