2011-04-13 59 views
4

首先,我很抱歉我的英语不好。在asp.net中实现证书授权

在过去的两天里我读了很多,但没有找到解决我的问题。

我需要实现这样的授权: 用户打开网页,出现特殊表格。在这个表格上只有一个按钮“选择证书文件”。 当用户点击它 - 他必须选择证书文件,这将用于授权。该文件必须是存储在闪存驱动器等中的 。不在计算机硬盘上。

我读了关于cer/pfx文件,但没有关于这种模型。

也许这是不可能的,使这个在.NET

System.Security.Cryptography.X509Certificates.X509Certificate 
System.Security.Cryptography.X509Certificates.X509Certificate2 

使用这个类与此同时形式的授权将在本网站实现的,所以 用户可以选择如何授权。

更新: 我认为这些类不能用于此模型。你能告诉我其他什么吗?

回答

1

首先,您需要启用SSL的网页。您无法使用包含的开发Web服务器(cassini)进行开发。可以使用IIS Express或本地IIS实例来开发这样的认证模型。无法直接从您的代码控制SSL身份验证,并取决于IIS网页文件夹设置。看看this article

至于GUI体验,证书通常存储在安全的证书存储中,并且不能从客户端页面/脚本中进行控制。当Web浏览器通过客户端证书协商请求获取响应时,会显示一个显示所有兼容客户端证书的浏览器/平台特定对话框。在服务器端,您可以控制哪些证书可供客户端选择,方法是从受信任的证书颁发机构安装适当的根证书。但是,您无法控制哪些证书(它们存储在受支持的智能卡上的天气或本地存储在硬盘驱动器上)可供客户端进一步选择。

UPDATE

在你的情况,我想你想要什么是不可能的web浏览器在客户端身份验证的HTTPS会话内,因为你无法控制它如何管理它的证书存储区。

但是,如果您开发了一个可访问客户端USB驱动器上的便携式证书存储的插件,那么这将是可能的。我想我会用JAVA小程序在后台运行,并创建可以从页面的JavaScript访问的公共API,有以下原因去:

  • 可用于多个 平台/浏览器
  • 可以运行在一个启用SSL网页全 信任模式
  • 灿威胁PFX文件,证书 店(see

您需要实现认证/ handhake部分,例如通过让小程序使用XMLDSIG(可以包含歌手的公钥并在.net中支持)来签署XML文档/片段(也可以是附加包含用户名和密码哈希)。成功验证签名的XML后,您可以将正常的身份验证cookie返回给客户端。

+0

SSL现在不是问题。你写的关于证书的所有我知道。但我需要用户将证书保存在可移动设备上,我将写入它们。没有这个闪存驱动器的人不会访问网页。但谢谢你的回答。 – Dimka 2011-04-13 08:57:15

+0

我已根据您的评论更新了我的答案 – m0sa 2011-04-13 09:47:14

+0

谢谢!我正在考虑Java小程序,但整个项目正在研究.NET,所以我想在C#中找到解决方案,现在我正在尝试Silverlight。 – Dimka 2011-04-13 10:00:25