NSURLSession AuthChallenge反复抛出客户端证书

问题描述 投票:0回答:1

当我连接到需要客户端证书的SSO X509连接时,我提供了凭据并且它成功了。下次执行didReceiveChallenge委托方法时,auth方法是NSURLAuthenticationMethodServerTrust,我有这个authMethod的以下代码

completionHandler(NSURLSessionAuthChallengeUseCredential,[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);

对于下一个请求,我再次将authMethod作为NSURLAuthenticationMethodClientCertificate。

所以基本上对于每个请求,委托方法被命中两次,一次使用authMethod作为NSURLAuthenticationMethodClientCertificate,第二次使用authMethod NSURLAuthenticationMethodServerTrust

我不想为每个请求重复获取authMethod作为NSURLAuthenticationMethodClientCertificate。

这是什么原因以及如何避免它?它会影响每次进行身份验证的性能

authentication nsurlsession client-certificates authenticationchallenge
1个回答
0
投票

我知道你需要做三件事来避免这个问题:

  • 尽可能重复使用NSURLSession会话。套接字和TLS会话缓存都不会从一个会话共享到另一个会话,因此如果您不重用会话,您将会遇到针对每个请求的完整身份验证。
  • 确保您的服务器正确支持重新连接到现有会话,并配置为允许此操作。
  • 尽可能使用Wi-Fi。 IIRC,出于电源管理的原因,操作系统在蜂窝电话上比在Wi-Fi上更能激活连接。仅仅因为您创建了新连接(TLS缓存通常允许您重新连接到服务器上的现有TLS会话),您不一定会受到完整身份验证周期的影响,但更有可能。

如果这些都没有帮助,请打开DTS事件,Quinn或Rich可以帮助您调试问题。 :-)

© www.soinside.com 2019 - 2024. All rights reserved.