Java EE включает поддержку JSR 375, которая определяет переносимые подключаемые интерфейсы для аутентификации и хранилищ идентификаторов, а также новый интерфейс SecurityContext инъецируемого типа, который обеспечивает точку доступа для программной безопасности. Вы можете использовать встроенные реализации этих API или определить кастомные реализации.
API безопасности Java EE содержит следующие пакеты:
-
Пакет javax.security.enterprise
является основным пакетом API безопасности Java EE и содержит классы и интерфейсы, которые охватывают вопросы аутентификации, авторизации и идентификации. Таблица 51-1 перечисляет основные классы и интерфейсы в этом пакете.
-
Пакет javax.security.enterprise.authentication.mechanism.http
содержит классы и интерфейсы, связанные с механизмами аутентификации на основе HTTP, которые могут взаимодействовать с вызывающим субъектом или третьими сторонами в рамках протокола аутентификации. Таблица 51-2 перечисляет основные классы и интерфейсы в этом пакете.
-
Пакет javax.javax.security.enterprise.credential
содержит классы и интерфейсы для различных представлений учётных данных пользователя. Таблица 51-3 перечисляет основные классы и интерфейсы в этом пакете.
-
Пакет javax.security.enterprise.identitystore
содержит классы и интерфейсы, связанные с хранилищами идентификаторов, которые проверяют учётные данные вызывающего субъекта и определяют группы, в которых он состоит. Таблица 51-4 перечисляет основные классы и интерфейсы в этом пакете.
Таблица 51-1 Основные классы и интерфейсы в javax.security.enterprise
Класс или интерфейс |
Описание |
SecurityContext
|
Интерфейс инъецируемого типа, который обеспечивает точку доступа для программной безопасности, предназначенную для использования кодом приложения для взаимодействия с API безопасности Java EE. |
CallerPrincipal
|
Основной тип, который может представлять идентификационную информацию вызывающего приложение субъекта. |
AuthenticationStatus
|
Enum используется для указания возвращаемого значения из механизма аутентификации. |
AuthenticationException
|
Указывает, что в процессе аутентификации возникла проблема. |
Таблица 51-2 Основные классы и интерфейсы в javax.security.enterprise.authentication.mechanism.http
Класс или интерфейс |
Описание |
HttpAuthenticationMechanism
|
Интерфейс, представляющий механизм аутентификации HTTP. Разработчики могут предоставить собственную реализацию этого интерфейса или использовать один из нескольких встроенных механизмов HTTP-аутентификации. |
HttpMessageContext
|
Интерфейс, представляющий параметры, передаваемые в/из методов HttpAuthenticationMechanism во время выполнения. |
AuthenticationParameters
|
Класс, который содержит параметры, переданные методу SecurityContext.authenticate() . |
HttpMessageContextWrapper
|
Разработчики абстрактных классов могут расширить возможности для настройки поведения HttpMessageContext . |
Примечание: Пакет javax.security.enterprise.authentication.mechanism.http также включает ряд классов аннотаций, которые используются для настройки/включения встроенных механизмов аутентификации или изменить поведение механизма аутентификации.
|
Таблица 51-3 Основные классы и интерфейсы в javax.security.enterprise.credential
Класс или интерфейс |
Описание |
Credential
|
Интерфейс, который представляет общие учётные данные и определяет несколько методов для работы с учётными данными. Все остальные классы в этом пакете являются реализациями интерфейса Credential. |
AbstractClearableCredential
|
Абстрактный класс, реализующий поведение, общее для всех типов учётных данных, значение которых поддерживает очистку. |
BasicAuthenticationCredential
|
Класс, расширяющий UsernamePasswordCredential для представления учётных данных, используемых базовой аутентификацией HTTP. |
CallerOnlyCredential
|
Учётные данные, которые содержат только имя вызывающего субъекта. Может использоваться для подтверждения личности, но не для аутентификации пользователя из-за отсутствия каких-либо секретных или других учётных данных, которые могут использоваться для проверки. |
Password
|
Класс, представляющий текстовый пароль. |
RememberMeCredential
|
Класс, представляющий учётные данные, представленные в виде токена, для явного использования с функцией JSR 375 RememberMe. |
UsernamePasswordCredential
|
Класс, представляющий учётные данные, обычно используемые аутентификацией по имени пользователя и его паролю. |
Таблица 51-4 Основные классы и интерфейсы в javax.security.enterprise.identitystore
Класс или интерфейс |
Описание |
IdentityStore
|
Интерфейс, представляющий хранилище идентификаторов. Разработчики могут предоставить собственную реализацию этого интерфейса или использовать одно из встроенных хранилищ идентификаторов. |
IdentityStoreHandler
|
Интерфейс, который определяет методы, используемые приложениями для взаимодействия с хранилищами идентификаторов. Приложения могут использовать встроенный IdentityStoreHandler или предоставлять собственную реализацию, если требуется поведение, отличающееся от поведения встроенного. |
PasswordHash
|
Интерфейс, определяющий методы для генерации и проверки хэшей паролей, необходимых для безопасной проверки паролей при использовании встроенного хранилища идентификаторов базы данных. Разработчики могут реализовать этот интерфейс для генерации/проверки хэшей паролей с использованием любого желаемого алгоритма. |
Pbkdf2PasswordHash
|
Интерфейс маркера реализуется во встроенной реализации PBKDF2 PasswordHash. Разработчики могут использовать этот интерфейс для выбора встроенного алгоритма PBKDF2 при настройке хранилища идентификаторов базы данных. |
RememberMeIdentityStore
|
Интерфейс, определяющий специальный тип хранилища идентификаторов, используемый в сочетании с аннотацией RememberMe и обеспечивающий поведение RememberMe в приложении. |
CredentialValidationResult
|
Класс, представляющий результат попытки проверить учётные данные. |
IdentityStorePermission
|
Требуется разрешение для вызова метода getGroups в IdentityStore, когда настроен SecurityManager. |