HTTPS и SSL взаимная аутентификация должна использоваться для этого, потому что клиент уже имеет по крайней мере корпоративный подписанный CA сертификат на своей смарт-карте.
Когда вместо взаимной аутентификации сервера используется взаимная аутентификация SSL, сертификат клиента также проверяется сервером, а не только сертификатом сервера клиентом (что является более распространенной настройкой, например, для сайтов электронной торговли с поддержкой HTTPS). И вы по-прежнему получаете зашифрованное соединение в качестве бонуса.
См. Например Конфигурация SSL Tomcat 6.0. HOW-TO . Ключевым моментом является наличие сертификата CA в доверенном хранилище и атрибуте clientAuth, равном true.
Для входа в CLIENT-CERT в web.xml соответствующего веб-приложения также должен быть указан метод входа в систему:
...
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Foo * Bar * Realm</realm-name>
</login-config>
...
Атрибут SubjectDN из сертификата клиента используется для идентификации пользователя. LDAP (или ActiveDirectory) все еще может использоваться для авторизации - например, проверяя, принадлежит ли пользователь группе.
Может быть трудно установить все это в первый раз. Чтобы ознакомиться со всеми концепциями, я рекомендую следующий подход:
- Использовать BASIC-метод авторизации с именами пользователей и паролями, хранящимися в файле
- Использовать простую авторизацию на основе ролей
- Включить CLIENT-CERT метод аутентификации + простая авторизация на основе ролей
- Включение LDAP для проверки ролей