Аутентификация CAC в Java WebApp

Я видел, что было несколько других сообщений Java и CAC о стековом потоке. Я новичок во всех этих вещах, и я все еще пытаюсь понять, что делать и куда идти в моей голове.

Я делаю работу для большой организации, которая использует CAC с блоками Windows 7 для аутентификации пользователей, которые хотят войти в свои ПК. Они вставляют CAC в клавиатуру и вводят PIN-код.

Мой босс хотел бы изменить наш Java Webap таким образом, чтобы он не заставлял пользователей проходить аутентификацию, если у них есть CAC на компьютере. Если нет, они пройдут через традиционный вход в систему LDAP.

Мы используем WebLogic 11g и Java 6.

С поиском в Google кажется, что есть два подхода:

  1. Реализуйте апплет, чтобы прочитать CAC пользователя и отправить SSL-сертификат в веб-приложение.

  2. Реализация "взаимной аутентификации SSL" на веб-сервере, которая заставит браузер отправлять SSL-сертификат на CAC в веб-приложение

У меня есть правильная оценка моих вариантов?

Какое решение проще?

Что будет менее трудным, более надежным в долгосрочной перспективе?

Я почти ничего не знаю о SSL, который, кажется, распространен в обоих решениях. Я нашел несколько учебных пособий по SSL, в которых подробно рассматриваются абстрактные понятия. Кто-нибудь может порекомендовать хороший учебник для того, что я хочу сделать?

Большое спасибо заранее за любую информацию или советы

Стив

1 ответ

Решение
  1. Реализуйте апплет, чтобы прочитать CAC пользователя и отправить SSL-сертификат в веб-приложение.

  2. Реализация "взаимной аутентификации SSL" на веб-сервере, которая заставит браузер отправлять SSL-сертификат на CAC в веб-приложение

Вы хотите сделать № 2. Вы действительно не хотите связываться с аппаратным / программным обеспечением смарт-карт. Пусть ОС сделает всю эту работу.

Я сделал это на IIS, но, как правило, для реализации этого вам нужно будет настроить свой веб-сервер так, чтобы он требовал сертификатов клиента и доверял CA DoD. Возможно, вам придется настроить ваш веб-сервер для объявления клиентам, каким CA он доверяет. Если у клиентов Win7 есть сертификат клиента, подписанный доверенным центром сертификации, клиент попытается его использовать. Если это сертификат смарт-карты, Windows автоматически запросит у пользователя пин-код; вам не нужно беспокоиться об этом. Если пользователь введет правильный пин-код, сертификат будет отправлен на ваш веб-сервер, который затем сможет проверить сертификат в ЦС. Если это действительный сертификат, ваше программное обеспечение может затем проанализировать поля в сертификате и использовать значения для проверки подлинности пользователя (т. Е. Разрешено ли пользователю, несмотря на наличие действительного сертификата, войти в систему на основании его имени / адреса электронной почты / так далее). Вам решать, как справиться с этим оттуда.

Вам будет намного легче разобраться в этом и найти информацию, если вы забудете, что пользователи используют смарт-карту или CAC, и просто начнете с мысли, что вы собираетесь использовать клиентские сертификаты для аутентификации. Начните с создания самозаверяющего сертификата CA. Затем создайте сертификат сервера для вашего веб-сервера и сертификат клиента, подписанный тестовым центром сертификации. Добавьте тестовый сертификат CA в качестве доверенного корневого сертификата на клиенте и сервере. Затем попытайтесь написать небольшое тестовое приложение, которое использует сертификат клиента для аутентификации на вашем веб-сервере. Как только у вас это заработает, вы можете добавить DoD CA и попытаться извлечь информацию из сертификата CaC.

удачи!

Другие вопросы по тегам