【问题标题】:Smartcard authentication for .NET.NET 的智能卡身份验证
【发布时间】:2011-11-25 04:45:41
【问题描述】:

我有一个智能卡读卡器和一个智能卡。我已经安装了驱动程序,它按预期工作。我可以将此卡用作 Windows 登录或远程桌面登录。

我正在构建我的应用程序,该应用程序只有在插入卡时才能工作,并且我需要从我的应用程序调用 Web 服务,这需要来自卡的证书。

关于我如何做到这一点的任何建议?网络上到处都是 ASP.NET 的示例,我正在构建 Windows 表单。

进一步说明:即使用户在没有卡的情况下登录 Windows,一切也必须相同。我必须出示该卡才能使该应用程序运行。

谢谢。

【问题讨论】:

  • 有一个闪屏,在此期间尝试进行身份验证,如果身份验证失败关闭应用程序。您应该能够轻松地使用找到的示例并将它们应用到您的应用程序中。

标签: .net authentication smartcard


【解决方案1】:

如果智能卡驱动程序支持标准的 Windows CryptoAPI,它会将证书从卡导出到用户的个人存储中。您可以使用X509Store 类访问这些证书。当您访问证书时,系统将提示用户插入卡并输入其 PIN。

注意:某些智能卡驱动程序不会自动导出证书。相反,他们有一个用户可以用来执行此操作的工具。

【讨论】:

  • 我已经这样做了,谢谢。由于我有几张卡要测试,它们都在 X509Store(StoreName.My) 中。我不确定用户插入卡时会发生什么。我应该以某种方式找出“激活”的证书?
  • 好吧,既然要对用户进行身份验证,就应该提前知道自己想要什么证书。当您从未连接到计算机的智能卡访问证书时,系统会提示用户插入卡。 (除非您在某些加密操作中指定 Silent 标志 - 在这种情况下,您只会收到错误消息。)
  • 我不知道我想要哪个证书。我想使用他的智能卡识别用户。
  • 但最终,用户可以出示任何证书。您需要有一些迹象表明所提供的证书是否有效。通常的步骤是向用户提供证书列表(例如使用msdn.microsoft.com/de-de/library/…)。然后用户选择他的证书,你根据你的规则对其进行验证。
  • 如果插入智能卡,用户识别应该是自动的。如果没有智能卡应用程序必须显示将卡插入读卡器的消息。这是我的任务,所需的行为与使用智能卡登录 Windows 非常相似。
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多