具有客户端认证的Web身份验证

时间:2015-05-28 22:49:27

标签: asp.net authentication x509certificate

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

  • 网络应用的用户ID
  • 网络应用程序的密码
  • 客户端证书安装在用户的PC上。我将客户端或计算机证书视为存储在Windows注册表中的长字符串或密钥。

我打算将这三个元素放在一个表中,所以当用户意图登录时,它会将这三个元素发送到服务器端并进行检查。

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

我还没有在每台客户端PC上安装客户端或机器证书,也没有在IIS中安装CA.但根据Microsoft,一个asp.net Web应用程序将自动发送客户端或机器证书到服务器,asp.net可以得到它。我也找到了另一个program example

怎么可能?我总是认为asp.net web应用程序无法读取客户端资源,如果你想读取客户端资源,那么你应该使用像ActiveX这样的东西来解决它的所有复杂问题。

1 个答案:

答案 0 :(得分:2)

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

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

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