【问题标题】:NSURLConnection willSendRequestForAuthenticationChallenge persistenceNSURLConnection willSendRequestForAuthentication挑战持久性
【发布时间】:2016-01-31 12:06:31
【问题描述】:

(即将弃用)NSURLConnectionDelegate 允许您像这样处理 TLS 信任挑战:

-(void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge(NSURLAuthenticationChallenge *)challenge
{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
        [challenge.sender performDefaultHandlingForAuthenticationChallenge:challenge];
}

假设相同的 x509 证书由同一台服务器提供,我的测试表明此方法的效果在应用程序执行期间被缓存。此方法不再命中。

有没有办法在处理发生后强制应用程序忘记此方法的效果,以便随后对同一 Web 服务的命中强制调用此方法?

【问题讨论】:

  • 您有解决此问题的方法吗?我面临着同样的问题,即使在终止/终止应用程序并重新启动之后,连续调用相同的 Web 服务也不会调用该委托。
  • 很遗憾没有。由于 NSURLConnection 已被弃用,因此我已将所有内容更新为 NSURLSession。 NSURLSession 不缓存答案,所以这对我来说不再是问题。迁移只有几个小问题。否则它是令人惊讶的无痛。
  • 感谢您的回复。好的,我也试试把 NSURLConnection 改成 NSURLSession。

标签: ios ssl tls1.2


【解决方案1】:

我想我正在使用 [challenge.sender cancelAuthenticationChallenge:...]。

【讨论】:

  • 或拒绝ProtectionSpaceAndContinueWithChallenge:.
  • 这些都不起作用。这个想法是不取消身份验证质询。应该妥善处理,但每次遇到挑战都要处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2019-05-31
  • 1970-01-01
  • 2014-12-21
相关资源
最近更新 更多