在App Transport Security下与用户服务器通信

时间:2016-12-11 10:42:30

标签: ios app-transport-security

我目前正在开发一个需要连接到用户提供的应用程序,也可能还有用户托管服务。这些服务并非都支持HTTPS。在过去,NSAllowsArbitraryLoads将使用户能够连接到这些服务,尽管App Transport Security。据我了解,NSAllowsArbitraryLoads很快就会被弃用,而不会直接替换。

我有两个关于App Transport Security的问题:

  • 何时弃用NSAllowsArbitraryLoads
  • 之后如何连接这些服务或不可能?

沿着这条线,我的应用程序还应该支持不受信任的TLS证书。目前,我计划在URL urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)的URLSessionTaskDelegate中实现它。

这是处理这种情况的有效且允许的方式吗?

干杯!

1 个答案:

答案 0 :(得分:3)

NSAllowsArbitraryLoads不会被弃用。你仍然可以使用它。但是从2017年1月开始,将有一个新的限制:当您没有充分理由时,在info.plist中定义了具有ATS例外的应用将不再被批准。 (这仅适用于新版本。目前AppStore上现有的任何版本都不会受到影响。)

有关详细信息,请参阅WWDC 2016的Session 706。开发人员论坛中的This thread也可能包含一些有用的信息。

使用URLSession仍然有效。您不必更改任何代码。但是,如果没有ATS例外,您需要可信赖的TLS证书。