我在使用客户端证书进行身份验证的网站时遇到问题。该站点包含一个iframe,该iframe可以加载托管在其他服务器上的页面。此页面还使用客户端证书。

这是完美的工作方式,只是“内部页面” Web服务器有时会打ic,导致它失去用户的身份验证状态(所讨论的站点是ASP.NET)。我正在尝试找到一种从中进行正常恢复的方法,但是我无法通过设置HTTP响应代码和/或WWW-authenticate标头使Internet Explorer重新传输客户端证书。最多,它将显示一个基本的用户名/密码提示。

当我在具有相同站点的Internet Explorer 8中打开一个新选项卡时,它将在该选项卡中正常工作,但是在原始选项卡中,客户端证书仅对“外部”网站可见。重新加载页面无济于事。我唯一的选择是关闭该标签并开始使用新的标签。

有人在IE中看到过这种行为吗?有什么办法让它重新传输客户端证书?

最佳答案

您将需要在HTTP响应中添加一个P3P标头,以告诉IE iframe中的内容一切正常。

Cache-Control:private
Content-Encoding:gzip
Content-Length:13801
Content-Type:text/html; charset=utf-8
Date:Thu, 18 Aug 2011 16:59:18 GMT
P3P:CP="CAO PSA OUR"
Server:Microsoft-IIS/7.0
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET


您可以使用Response.AddHeader()执行此操作。

Response.AddHeader("P3P", "CP=\"CAO PSA OUR\"")

或者,如果您希望它在站点范围内,则可以在web.config中进行设置。

关于c# - IFRAME中的Internet Explorer和客户端证书,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/976075/

10-16 17:34