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

Я видел, что в stackoverflow было несколько других сообщений о 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, в которых подробно рассказывается об абстрактных концепциях. Может ли кто-нибудь порекомендовать хороший учебник для того, что я хочу сделать?

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

Стив


person Steve    schedule 25.04.2013    source источник


Ответы (1)


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

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

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

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

Вам будет намного легче понять это и найти информацию, если вы забудете, что пользователи используют смарт-карту или CAC, и просто начнете с идеи, что вы собираетесь использовать клиентские сертификаты для аутентификации. Начните с создания самоподписанного тестового сертификата ЦС. Затем создайте сертификат сервера для вашего веб-сервера и клиентский сертификат, подписанный вашим тестовым ЦС. Добавьте тестовый сертификат ЦС в качестве доверенного корневого сертификата на клиенте и сервере. Затем попытайтесь написать небольшое тестовое приложение, которое использует сертификат клиента для аутентификации на вашем веб-сервере. После того, как вы заработаете, вы можете добавить ЦС Министерства обороны США и попытаться извлечь информацию из сертификата ЦС.

удачи!

person imjosh    schedule 17.05.2013