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

时间:2019-02-08 17:44:02

标签: ios certificate wkwebview client-certificates

我们有一个企业应用程序,其中包含一个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)
    }

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

如果我将客户端证书放入应用程序包中(通常不建议这样做,也不适合用于生产用途),请加载它,并告诉WKWebView在completionHandler()回调中使用该凭据,然后将加载网站。

据我了解,WKWebView应该可以使用与Safari相同的客户端证书,因此我无所适从地解释了为什么它不起作用。

有人知道获得WKWebView来使用系统级客户端证书的方法吗?

0 个答案:

没有答案