首先,我很抱歉我的英语不好。
过去两天我读了很多,但没找到解决问题的方法。
我需要实施这样的授权: 用户打开网页,出现特殊表格。在此表单上只有一个按钮“选择证书文件”。 当用户点击它时 - 他必须选择证书文件,该文件将用于授权。这个文件必须是 存储在闪存驱动器等上。不在计算机硬盘上。
我读过关于cer / pfx文件的内容,但没有关于这种模型的内容。
也许在.net
中使用这个类是不可能的System.Security.Cryptography.X509Certificates.X509Certificate
System.Security.Cryptography.X509Certificates.X509Certificate2
同时表格授权将在本网站上实施, 所以用户可以选择如何授权。
更新: 我认为这些类不能用于此模型。你能告诉我什么吗?
答案 0 :(得分:1)
首先,您需要启用SSL的网页。您无法使用随附的开发Web服务器(cassini)进行开发。可以使用IIS Express或本地IIS实例开发此类身份验证模型。无法直接从您的代码控制SSL身份验证,并且取决于IIS网页文件夹设置。看看this article。
对于GUI体验,证书通常存储在证书存储中,这些证书存储是安全的,并且无法从客户端页面/脚本中进行控制。当Web浏览器获得具有客户端证书协商请求的响应时,将显示特定于浏览器/平台的对话框,其中显示所有兼容的客户端证书在服务器端,您可以通过从受信任的证书颁发机构安装相应的根证书来控制客户端可以选择哪些证书。但是,您无法控制哪些证书(它们存储在支持的智能卡上的天气或本地存储在硬盘上的天气)可供客户选择。
<强>更新强>
在您的情况下,我认为通过客户端验证的HTTPS会话在Web浏览器中无法实现您想要的内容,因为您无法控制它如何管理它的证书存储。
但是,如果您开发了一个能够访问客户端USB驱动器上的便携式证书存储的插件,那么这是可能的。我想我会使用在后台运行的JAVA applet,并创建一个可以从页面的javascript访问的公共API,原因如下:
您需要自己实现身份验证/握手部分,比如让applet使用XMLDSIG(可以包含歌手的公钥并支持)签署XML文档/片段(也可以添加包含用户名和密码哈希)在.net)。成功验证签名的XML后,您可以将正常的身份验证cookie返回给客户端。