【问题标题】:iOS: trigger NSURLErrorServerCertificateUntrusted instead of NSURLErrorCancelled when failing the AuthenticationChallengeiOS:在 AuthenticationChallenge 失败时触发 NSURLErrorServerCertificateUntrusted 而不是 NSURLErrorCancelled
【发布时间】:2019-10-07 02:01:33
【问题描述】:

我正在通过urlSessionDelegate 以自定义方式处理服务器信任身份验证挑战(将来自服务器信任的公钥与散列的本地版本进行比较),类似于此处的处理方式: How do I accept a self-signed SSL certificate using iOS 7's NSURLSession and its family of delegate methods for development purposes?

documentation 中所述,如果我想自己使服务器信任身份验证失败,我需要取消质询。执行此操作时,我的数据任务将使用NSURLErrorCancelled 完成。我有一些错误处理类,它们查看数据任务返回的结果NSURLError,如果我得到NSURLErrorServerCertificateUntrusted,它会更干净。

有没有办法做到这一点?还是仅在自动处理身份验证时才转发这些服务器错误,而不使用委托方法?

【问题讨论】:

    标签: ios security nsurlsession nserror authenticationchallenge


    【解决方案1】:

    相关证书的正常处理是否会因该错误而失败?

    如果是这样,您可以在这种情况下使用 NSURLSessionAuthChallengePerformDefaultHandling。

    如果不是,我认为唯一的方法是与挑战发送者混在一起,这是非常不鼓励的,尽管如果你调用它然后调用适当的完成处理程序可能不是灾难性的。不过,您很有可能会收到两次回调。我从来没有尝试过。

    我的建议是向 Apple 提交一个错误,要求提供适当的 API 来传递 NSError 以及取消。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      相关资源
      最近更新 更多