Как извлечь имя пользователя из DoD CAC, используя Java
Я пытаюсь связаться с CAC, используя Java. Из комплекта разработчика я смог найти информацию об извлечении уникального идентификатора (CHUID) и некоторые другие сведения, например апплеты, имеющиеся на карте. Однако я не могу извлечь имя пользователя (LastName.FirstName.MiddleName.ID) из карты, и я также не могу найти документацию по материалам CAC.
Я не использую карту для доступа к безопасному веб-сайту. Я использую его в настольном приложении для аутентификации пользователей, и поэтому не буду получать доступ к сертификатам, хранящимся на карте. Я могу получить доступ к различным апплетам, хранящимся на карте, но не знаю, как получить имя пользователя. Это имя пользователя необходимо для проверки пользователей в нашей системе. Как я могу получить имя пользователя из CAC?
2 ответа
Я не уверен, что вы используете для этого, но если вы обращаетесь к нему с помощью PKCS#11, вам нужно найти псевдоним на карте KeyStore
который содержит текст "Удостоверение личности". Затем вы можете получить этот сертификат как X509Certificate
с помощью keyStore.getCertificate(alias)
и получить имя, которое вы ищете, чтобы использовать cert.getSubjectX500Principal().getName()
,
И да, я так и не нашел никакой документации для такого рода вещей.
Большинство считывателей карт поставляются с драйвером, который обеспечивает поддержку PKCS #11, а затем вы можете использовать поставщика безопасности SunPKCS11 для обработки CAC, как и любого другого хранилища ключей. Этот ответ на связанный вопрос может быть полезным.
Что касается документации по разработке Java-приложений с поддержкой CAC, мне так и не удалось найти ни одной.