我正在使用Swagger生成的Swift客户端,该客户端使用NSURLCredentials与服务器进行身份验证。我正在使用持久性类型.Permanent
我的应用程序在后台与服务器通信,并且可以正常工作,但当我锁定手机时除外(我在日志中看到401错误)。我相信NSURLCredential在手机锁定时无法访问钥匙串。
我遇到了一些有关使用kSecAttrAccessibleAfterFirstUnlock启用钥匙串访问的文章。我无法弄清楚如何使用NSURLCredential做到这一点。有人知道是否以及如何配置吗?

最佳答案

是的,很可能就是这样。您有两种选择:


删除基础钥匙串项,然后重新创建它,并指定在解锁设备后应该可以访问它。您完全不需要在该方法中使用NSURLCredential。只需使用Keychain Services API创建一个Internet密码项目,凭据存储区就会自动将其选中。
将凭据数据保存在内存中,并在会话委托中实现URLSession:task:didReceiveChallenge:completionHandler:委托方法(如果使用该API,则为NSURLConnection的等效方法)以在询问时提供凭据。

09-10 11:16