C# 如何从ASP.NET站点访问智能卡?

C# 如何从ASP.NET站点访问智能卡?,c#,asp.net,smartcard,smartcard-reader,C#,Asp.net,Smartcard,Smartcard Reader,我需要从ASP.NET站点使用智能卡进行通信。我已经创建了一个dll(使用Winscard.dll和MCSCM.dll,这是SCM Micro Reader的dll),可以在windows上与读卡器一起使用,但我无法将其与ASP.NET一起使用。该项目将只在IE上运行,我必须避免使用Javascript 谢谢你的帮助。我在8年前就遇到了这个问题,但当时我们称之为ASP 问题是ASP代码在远程服务器上运行,而您的智能卡读卡器是本地硬件 我是如何绕过它的,这是一个小型客户端应用程序,它定期轮询智能卡

我需要从ASP.NET站点使用智能卡进行通信。我已经创建了一个dll(使用Winscard.dll和MCSCM.dll,这是SCM Micro Reader的dll),可以在windows上与读卡器一起使用,但我无法将其与ASP.NET一起使用。该项目将只在IE上运行,我必须避免使用Javascript


谢谢你的帮助。

我在8年前就遇到了这个问题,但当时我们称之为ASP

问题是ASP代码在远程服务器上运行,而您的智能卡读卡器是本地硬件

我是如何绕过它的,这是一个小型客户端应用程序,它定期轮询智能卡读卡器以进行插卡/拔卡。如果插入了一张卡,它会调用一个web服务来提醒服务器,服务器会根据卡和一些随机数创建一个唯一的密钥。然后,它要求用户输入一个PIN,该PIN与卡id和随机数有关

这意味着它需要特定的卡和一个不可重复的号码。我非常确定我使用了SSL来加密web服务消息,这当然是系统中最脆弱的部分


我就是这样做的。SCM技术支持人员真的很有帮助,而且英语说得很好,也许值得让他们大喊一声

我找到了解决方案。我加载一个Javascript来创建activeXobject,并使用安装在客户端上的dll。大概是这样的:

<script language="javascript">

   function Run() 
       {
           var x = new ActiveXObject("ASC.SC");
           txtRd.value = x.AutoRead();
       } 
</script>

函数运行()
{
var x=新的ActiveXObject(“ASC.SC”);
txtRd.value=x.AutoRead();
} 

谢谢您的帮助。

如果您试图使用智能卡进行身份验证,您应该使用我的同事编写的。它非常安全,应该可以做到这一点。

我的公司为此制作了一个商业插件

它包括IE和firefox/chrome支持,并提供一种脚本语言,用于编写控制智能卡的简单服务器端脚本。它还包括与浏览器交互的功能(如将从智能卡读取的值放入网页上的字段,或导航到不同的网页)


您可以使用许多在线演示来查看它是否符合您的要求:

我尝试创建一个由页面加载的WindowsForm控件,它可以工作,但我无法获得与读卡器交互的安全权限。