WKWebView 不使用 Safari 信任的客户端证书

And*_*ing 5 certificate client-certificates ios wkwebview

我们有一个企业应用程序,其中包含WKWebView需要访问需要客户端证书的站点。

所需的客户端证书已安装在设备上,我们可以在 Safari 中访问受保护的站点。目前客户端证书是手动下载和信任的。

但是,当我们尝试WKWebView在我们的应用程序中访问同一站点时,该站点会返回 HTTP 400,因为它找不到客户端证书。

我已经尝试了以下适当navigationDelegate方法的实现:


        print("authentication challenge: \(challenge)")

        guard let trust = challenge.protectionSpace.serverTrust else {
            print("no server trust: \(challenge.protectionSpace)")
            completionHandler(URLSession.AuthChallengeDisposition.useCredential, nil)
            return
        }

        print("using server trust: \(challenge.protectionSpace)")
        let cred = URLCredential(trust: trust)
        completionHandler(.useCredential, cred)
    }
Run Code Online (Sandbox Code Playgroud)

当为客户端证书调用此方法时,没有challenge.protectionSpace.serverTrust.

如果我将客户端证书放入应用程序包中(通常不建议并且不是生产使用的可行选项),加载它并告诉 WKWebView 在completionHandler()回调中使用该凭据,然后站点加载。

我的理解是WKWebView应该可以访问与 Safari 相同的客户端证书,因此我无法解释为什么这不起作用。

有谁知道WKWebView使用系统范围的客户端证书的方法吗?