Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Обзор интерфейса механизма аутентификации HTTP

Интерфейс HttpAuthenticationMechanism определяет SPI для записи механизмов аутентификации, которые могут быть предоставлены приложением и развёрнуты с использованием CDI. Разработчики могут написать свои собственные реализации HttpAuthenticationMechanism для поддержки определённых типов токенов аутентификации или протоколов. Существует также несколько встроенных механизмов аутентификации, которые выполняют аутентификацию BASIC, FORM и Custom FORM.

Встроенные механизмы аутентификации включаются и настраиваются с помощью одной из следующих аннотаций:

  • BasicAuthenticationMechanismDefinition — реализует базовую аутентификацию, которая соответствует поведению контейнера сервлета, когда BASIC <auth-method> объявлен в web.xml.

  • FormAuthenticationMechanismDefinition — реализует аутентификацию на основе формы, которая соответствует поведению контейнера сервлета, когда FORM <auth-method> объявлен в web.xml.

  • CustomFormAuthenticationMechanismDefinition — реализует модифицированную версию аутентификации на основе форм, в которой пользовательская обработка заменяет POST на j_security_check.

Реализация HttpAuthenticationMechanism должна быть компонентом CDI, который должен находиться контейнером и развёртывается во время выполнения, и предполагается, что он имеет нормальную область видимости. Для обнаружения бина контейнер сервлета ищет бин, который реализует HttpAuthenticationMechanism — он должен быть только один для каждого приложения — и, если он находится, организует его развёртывание для аутентификации вызывающих приложение субъектов.

Контейнер сервлета использует JASPIC, интерфейс провайдера услуг аутентификации Java для контейнеров, для развёртывания механизмов аутентификации. Контейнер предоставляет модуль проверки подлинности сервера JASPIC (SAM), который может делегировать HttpAuthenticationMechanism, и организует, чтобы этот "мост" SAM был зарегистрирован в JASPIC AuthConfigFactory. Во время выполнения обычная обработка JASPIC вызывает мост SAM, который затем делегирует HttpAuthenticationMechanism для выполнения аутентификации и запуска любого необходимого диалога с вызывающим субъектом или с третьими сторонами, участвующими в процессе аутентификации.

Интерфейс HttpAuthenticationMechanism определяет следующие три метода, которые соответствуют трём методам, определённым интерфейсом JASPIC ServerAuth. Когда один из методов JASPIC вызывается на мосту SAM, он делегирует соответствующий метод HttpAuthenticationMechanism. Хотя имена методов идентичны, сигнатуры методов таковыми не являются. Мост SAM сопоставляет параметры, передаваемые ему платформой JASPIC, и параметры, ожидаемые HttpAuthenticationMechanism.

  • validateRequest() — проверяет входящий запрос и аутентифицирует вызывающего субъекта.

  • secureResponse() — (необязательно, если реализация по умолчанию устраивает) защищает сообщение ответа.

  • cleanSubject() — (необязательно, если реализация по умолчанию устраивает) очищает объекты принципала и учётных данных.

Только метод validateRequest() должен быть реализован с помощью HttpAuthenticationMechanism. Интерфейс включает в себя реализации по умолчанию для secureResponse() и cleanSubject(), реализация которых обычно устраивает.

Следующие аннотации можно использовать для добавления дополнительных поведений в HttpAuthenticationMechanism:

  • AutoApplySession — указывает, что функциональность JASPIC registerSession должна быть включена таким образом, чтобы идентификатор аутентифицированного вызывающего субъекта сохранялся в его сессии.

  • LoginToContinue — механизм указания свойств для входа в систему FORM — страницы входа, страницы ошибок и т. д. Встроенные механизмы аутентификации FORM используют LoginToContinue для настройки необходимых параметров.

  • RememberMe — указывает, что хранилище идентификаторов RememberMe должно использоваться для включения функциональности RememberMe в механизм аутентификации.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)