使用客户端认证的 Web 身份验证

Web Authentication with client certification

我正在尝试使用三个元素验证网络应用程序的登录:

我打算将这三个元素放在一个 table 中,因此当用户打算登录时,它会将这三个元素发送到服务器端并对其进行检查。

例如,如果用户在未分配给他的PC上加载web应用程序,则服务器将验证用户名和密码是否正确,但客户端证书不属于用户,将拒绝登录。

我还没有在每台客户端 PC 上安装客户端或机器证书,也没有在 IIS 中安装 CA。但是根据 Microsoft, an asp.net web app will send automatically a client or machine certificate to server and asp.net can get it. Also I have found another program example 这样做。

这怎么可能?我一直认为 asp.net 网络应用程序无法读取客户端资源,如果您想读取客户端资源,那么您应该使用像 ActiveX 这样复杂的东西。

你是对的,ASP.NET无法读取任何客户端资源。 ASP.NET 与从用户的 PC 获取客户端证书无关。

您所做的是告诉您的 Web 服务器 (IIS) 请求或要求客户端证书。服务器正在添加一个特殊的 http header 来告诉浏览器发送客户端证书。浏览器向 Windows 索要一个,或使用其自己的商店 (Firefox)。然后浏览器将客户端证书的 public 部分发送到服务器。

您的 ASP.NET 可以询问 IIS 浏览器是否已发送证书并访问该信息以进行身份​​验证。