middle
Какие способы аутентификации доступны сервлету
Спецификация сервлетов определяет четыре стандартных типа аутентификации, настраиваемых через web.xml.
| Тип | Метод | Описание |
|---|---|---|
| BASIC | HTTP Basic Authentication | Браузер показывает стандартное окно ввода логина/пароля. Credentials передаются в Base64 (не зашифрованы) |
| FORM | Form Based Login | Используется кастомная HTML-форма для ввода учётных данных |
| DIGEST | HTTP Digest Authentication | Пароль хешируется перед передачей (более безопасно, чем BASIC) |
| CLIENT-CERT | HTTPS Client Certificate | Аутентификация через клиентский SSL-сертификат |
Настройка FORM-аутентификации
Пример
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
BASIC подходит для простых API и внутренних сервисов. FORM — для веб-приложений с пользовательским интерфейсом. CLIENT-CERT — для высокобезопасных enterprise-систем. На практике в Spring-приложениях аутентификация реализуется через Spring Security, который предоставляет гораздо более гибкие механизмы: OAuth2, JWT, LDAP, SAML.
На собеседовании: перечислите четыре типа и скажите, что в реальных проектах используется Spring Security. BASIC без HTTPS — уязвимость, потому что Base64 легко декодируется.