Сервис Аутентификации и Авторизации Java (англ. Java Authentication and Authorization Service, сокр. JAAS) — стандарт API Java SE и реализация системы информационной безопасности PAM.[1]
JAAS была представлена как расширяемая библиотека к Java SE 1.3, и была интегрирована как обязательный пакет в версии 1.4[1]
Главной целью JAAS является отделение аутентификации и авторизации пользователей от основной программы, чтобы управлять ими независимо от программы. Прошлый механизм аутентификации работал лишь на основе того откуда получен исполняемый код (например, локальному коду предоставлялось больше привилегий, чем коду полученному из интернета), но современная версия JAAS, также использует информацию о том, кто именно запустил код. JAAS является полностью расширяемым, тем самым он позволяет создавать собственные механизмы проверки подлинности и авторизации.
Администрирование
С точки зрения системного администратора, JAAS состоит из двух видов конфигурационных файлов:
- *.login.conf: определяет какие логин-модули и как необходимо задействовать в программе
- *.policy: определяет какими привилегиями наделены пользователи или программы
Например, приложение может использовать этот файл login.conf, определяющий, какие различные механизмы проверки подлинности необходимо выполнить, чтобы аутентифицировать пользователя:
PetShopApplication {
com.sun.security.auth.module.LdapLoginModule sufficient;
com.foo.SmartcardLoginModule requisite;
com.sun.security.auth.module.UnixLoginModule required debug=true;
}
Программный интерфейс
Для разработчика приложений, JAAS это стандартная библиотека, которая обеспечивает:
- представление сущности (Principal) и набора полномочий (Subject)
- сервис входа, который вызывает ваше приложение, чтобы узнать аутентификационные данные пользователя, например его имя и пароль. Этот сервис возвращает новый субъект (Subject)
- сервис, который проверяет, наделён ли субъект необходимыми полномочиями для запуска какого-либо кода.
Внедрение системы безопасности
Для внедрения системы безопасности, JAAS обеспечивает следующие интерфейсы:
- для добавлений полномочий к потокам (Subject)
- для разработки логин-модулей. Разрабатываемый модуль вызывает функции обратного вызова, чтобы запросить пользователя, проверяет этот запрос и генерирует объект класса Subject.
См. также
Ссылки