如何根据证书对用户进行身份验证?

时间:2015-04-01 19:19:49

标签: c# ssl-certificate

在证书提供商StartSSL上,当您注册时,您会输入您的电子邮件和密码。它们生成一个证书(.pfx),您需要将其下载并安装到浏览器中。

在评论中指出它是客户证书。

因此,当您点击登录时,例如在Chrome中会弹出一个窗口,询问您要使用哪个证书。我可以拥有多个客户端证书,并根据我选择的内容登录到不同的帐户。他们警告说,如果您丢失了证书,那么您无法重新生成新证书,无法登录该站点。

我想使用C#来做这件事 - 我想生成一个客户端证书,然后稍后使用它以管理员身份登录而不输入密码。

这有什么机制?如何生成证书并使用它们登录我的网站?我想在MVC C#网站上这样做。如果我需要生成自签名证书,我不介意,仅供我自己使用。至少它摆脱了密码形式和暴力攻击。

1 个答案:

答案 0 :(得分:3)

这很简单,证书要求是SSL握手的一个选项。

首先,您需要转到IIS上的SSL选项,并选中接受和要求证书的选项。这足以让浏览器自动弹出证书选择窗口,并且服务器和客户端证书可以相互保护通信。

https://technet.microsoft.com/pl-pl/library/cc753983%28v=ws.10%29.aspx

然后是请求管道。您需要一个httpmodule,或者只是为全局应用程序的AuthenticateRequest事件提供处理程序。在那里,您可以参考Request.ClientCertificate

https://msdn.microsoft.com/en-us/library/ms524668%28v=vs.90%29.aspx

您阅读证书的唯一属性,例如指纹,并使用本地数据库查找与证书对应的用户记录,并相应地为请求生命周期设置Principal