JAAS - Как аутентифицировать пользователя на веб-уровне?
Я пытаюсь понять, как защитить приложения Java EE с помощью JAAS.
На самом деле я понимаю, как работать с правилами в EJB, однако я не понимаю, как аутентифицировать пользователя на веб-уровне, например, создать простую страницу JSF с формой входа в систему, проверить заданное имя пользователя и пароль с помощью БД и в в случае успеха, как установить Принципал для этого пользователя в моем приложении.
Каков общий способ сделать это? Я хотел бы иметь как можно больше AS-независимого решения.
1 ответ
JAAS не является универсальным стандартом для этого. Фактически, модули входа в систему JAAS немного не подходят для аутентификации Java EE. Полная модель JAAS была создана для приложений Java, работающих локально, экранируя базы кода друг от друга (например, это специальный jar, разрешенный для чтения из файловой системы).
Сервер Java EE очень редко запускает ненадежный код, поэтому большая часть функциональности, предлагаемой JAAS, просто не используется.
Две очень хорошие статьи на эту тему:
Каков общий способ сделать это?
К сожалению, обычным делом является использование конкретной вещи AS. Терминология для этой "вещи" также специфична. Это может быть вызвано как угодно из "области", "домена безопасности", "зоны", "модуля входа в систему", и кто знает, как они еще это называют.
Я хотел бы иметь как можно больше AS-независимого решения.
К счастью, есть также стандартный способ сделать это в Java EE 6 и более поздних версиях, который полностью независим от AS: модули аутентификации JASPIC.
Однако разные серверы приложений не всегда полностью поддерживают это. Конечно, это является частью стандарта Java EE, что означает, что производители ДОЛЖНЫ его поддерживать, но это по-прежнему не означает, что они реализуют все так, как сказано в спецификации (но вместо этого они точно реализуют только то, для чего тестирует TCK).
Смотрите следующие две статьи, которые я написал для получения дополнительной информации о JASPIC: