【问题标题】:How to extract the username from a DoD CAC using Java如何使用 Java 从 DoD CAC 中提取用户名
【发布时间】:2011-05-26 05:33:08
【问题描述】:

我正在尝试使用 Java 与 CAC 通信。从开发工具包中,我能够找到有关提取唯一 ID (CHUID) 的信息以及其他一些信息,例如卡上可用的小程序。但是,我无法从卡中提取用户名 (LastName.FirstName.MiddleName.ID),也无法找到有关 CAC 内容的文档。

我没有使用该卡访问安全网站。我在桌面应用程序中使用它来验证用户,因此不会访问存储在卡上的证书。我可以访问存储在卡上的不同小程序,但不知道如何获取用户名。需要此用户名来验证我们系统中的用户。如何从 CAC 获取用户名?

【问题讨论】:

  • CoreStreet (corestreet.com) 有一个很好的智能卡库,您可以使用它来读取 CAC 和 PIV 卡。不过,您必须为此付费。

标签: java cac


【解决方案1】:

我不确定您使用什么来执行此操作,但如果您使用 PKCS#11 访问它,您需要在卡的 KeyStore 上找到包含文本“ID 证书”的别名。然后,您可以使用keyStore.getCertificate(alias)X509Certificate 的形式获取该证书,并使用cert.getSubjectX500Principal().getName() 获取您要查找的名称。

是的,我也从未真正找到任何关于这类事情的文档。

【讨论】:

    【解决方案2】:

    大多数读卡器都会附带一个支持 PKCS #11 的驱动程序,然后您可以使用 SunPKCS11 安全提供程序来像对待任何其他密钥存储一样对待 CAC。 This answer 到相关问题可能会有所帮助。

    关于开发支持 CAC 的 Java 应用程序的文档,我也从未找到。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 2012-04-25
      • 2019-08-12
      • 2011-04-25
      • 2010-10-24
      • 2011-03-14
      • 2010-10-18
      • 2013-05-09
      相关资源
      最近更新 更多