如何使用Java从DoD CAC中提取用户名

如何使用Java从DoD CAC中提取用户名,java,cac,Java,Cac,我正在尝试使用Java与CAC通信。从开发者工具包中,我能够找到关于提取唯一ID(CHUID)的信息和其他一些信息,比如卡片上可用的小程序。但是,我无法从卡中提取用户名(LastName.FirstName.MiddleName.ID),也无法找到有关CAC内容的文档 我没有使用该卡访问安全的网站。我在桌面应用程序中使用它来验证用户,因此不会访问存储在卡上的证书。我可以访问存储在卡上的不同小程序,但不知道如何获取用户名。需要此用户名来验证系统中的用户。如何从CAC获取用户名?大多数读卡器都会附带

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


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

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


至于开发支持CAC的Java应用程序的文档,我也找不到任何文档。

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

是的,我也从未真正找到过这类文档。

CoreStreet()有一个很好的智能卡库,可以用来读取CAC和PIV卡。不过你得付钱。