Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Служба аутентификации и авторизации Java , или JAAS , произносится как «Jazz» [1], является реализацией Java стандартного модуля защиты информации Pluggable Authentication Module (PAM) . [2] JAAS был представлен как библиотека расширений для платформы Java Standard Edition 1.3 и был интегрирован в версию 1.4. [1]
Основная цель JAAS - разделить задачи аутентификации пользователей, чтобы ими можно было управлять независимо. В то время как предыдущий механизм аутентификации содержал информацию о том, откуда произошел код и кто подписал этот код, JAAS добавляет маркер о том, кто запускает код. Расширяя векторы проверки, JAAS расширяет архитектуру безопасности для приложений Java, которым требуются модули аутентификации и авторизации .
Администрация [ править ]
Для системного администратора JAAS состоит из двух типов файлов конфигурации :
*.login.conf
: указывает, как подключать модули входа, поставляемые поставщиком, в определенные приложения.*.policy
: указывает, каким удостоверениям (пользователям или программам) и какие разрешения предоставлены
Например, приложение может иметь этот файл login.conf, указывающий, как должны выполняться различные механизмы аутентификации для аутентификации пользователя:
PetShopApplication { com.sun.security.auth.module.LdapLoginModule достаточно; com.foo.SmartcardLoginModule Requisite; com.sun.security.auth.module.UnixLoginModule required debug = true; }
Интерфейс приложения [ править ]
Для разработчика приложений JAAS - это стандартная библиотека, которая предоставляет:
- представление личности ( принципала ) и набор учетных данных ( субъект )
- служба входа в систему, которая будет вызывать обратные вызовы вашего приложения, чтобы спрашивать пользователя, например, имя пользователя и пароль . Возвращает новую тему
- служба, которая проверяет, было ли субъекту предоставлено разрешение администратором.
Интеграция системы безопасности [ править ]
Для интегратора систем безопасности JAAS предоставляет интерфейсы:
- для предоставления пространства имен вашей личности приложениям
- для прикрепления учетных данных к потокам ( Тема )
- для разработки модулей входа в систему . Ваш модуль вызывает обратные вызовы для запроса пользователя, проверяет его ответ и генерирует тему .
Модули входа [ править ]
Модули входа в систему в первую очередь связаны с аутентификацией, а не с авторизацией, и составляют широко используемый компонент JAAS. Для реализации javax.security.auth.spi.LoginModule
интерфейса требуется модуль входа в систему , который определяет следующие методы:
Примечание: A Subject
- это пользователь, который пытается войти в систему.
- initialize: код для инициализации модуля входа в систему, обычно путем сохранения параметров, переданных в соответствующие поля файла
Class
. - вход в систему: на самом деле проверьте учетные данные, предоставленные через интерфейс
Object
, реализующийjavax.security.auth.Callback
интерфейс (например, проверьте базу данных). Этот метод может запрашивать у пользователя логин и пароль или использовать ранее полученные данные. Здесь важно отметить, что если предоставлены недопустимые учетные данные, тоjavax.security.auth.login.FailedLoginException
должен быть выдан a (вместо того, чтобы возвращать false, что указывает на то, что этот модуль входа в систему следует игнорировать, что потенциально позволяет пройти аутентификацию). - фиксация: личность субъекта подтверждена, поэтому код в этом методе устанавливает
Principal
иGroups
(роли) для успешно аутентифицированного субъекта. Этот метод должен быть написан аккуратно в корпоративных приложениях , как серверы приложений Java EE часто ожидают , что взаимоотношения междуPrincipal
иGroup
объекты , которые будут созданы в определенном смысле. Этот метод должен выдать ошибку,javax.security.auth.login.FailedLoginException
если аутентификация не удалась (например, пользователь указал неверный логин или пароль). - abort: вызывается, если сам процесс аутентификации терпит неудачу. Если этот метод возвращает false, этот модуль входа в систему игнорируется.
- выход из системы: Код , который должен выполняться при выходе из системы (например , может удалить
Principal
изSubject
или может привести к аннулированию веб - сессии).
Модули входа в систему могут обеспечивать единый вход (SSO) через определенный протокол / структуру SSO (например, SAML , OpenID и SPNEGO ), могут проверять наличие аппаратных токенов безопасности (например, USB-токен) и т. Д. В многоуровневом приложении. , LoginModules
может присутствовать как на стороне клиента, так и на стороне сервера.
LoginModule ( javax.security.auth.spi.LoginModule
) [ редактировать ]
Модули входа в систему написаны путем реализации этого интерфейса; они содержат фактический код для аутентификации. Он может использовать различные механизмы для аутентификации учетных данных пользователя. Код может получить пароль из базы данных и сравнить его с паролем, предоставленным модулю.
LoginContext ( javax.security.auth.login.LoginContext
) [ редактировать ]
Контекст входа в систему - это ядро инфраструктуры JAAS, которая запускает процесс аутентификации с создания субъекта. В процессе аутентификации субъект заполняется различными участниками и учетными данными для дальнейшей обработки.
Тема ( javax.security.auth.Subject
) [ править ]
Субъект представляет отдельного пользователя, объект или систему, другими словами, клиента, запрашивающего аутентификацию.
Директор ( java.security.Principal
) [ править ]
Директор представляет лицо предмета. Он инкапсулирует особенности или свойства предмета. Тема может содержать несколько участников.
Полномочия [ править ]
Полномочия - это не что иное, как информация о рассматриваемом предмете. Это могут быть номера учетных записей, пароли, сертификаты и т. Д. Поскольку учетные данные представляют некоторую важную информацию, дополнительные интерфейсы могут быть полезны для создания правильных и безопасных учетных данных - javax.security.auth.Destroyable
и javax.security.auth.Refreshable
. Предположим, что после успешной аутентификации пользователя вы заполняете субъект секретным идентификатором (в форме учетных данных), с помощью которого субъект может выполнять некоторые важные службы, но учетные данные должны быть удалены через определенное время. В этом случае может потребоваться реализовать Destroyable
интерфейс. Refreshable
может быть полезно, если учетные данные действительны только в течение ограниченного периода времени.
См. Также [ править ]
- Апач Широ
- Хранилище ключей
- OACC
Ссылки [ править ]
- ^ a b Теодор Дж. Шрейдер; Брюс А. Рич; Энтони Дж. Надалин. Java и интернет-безопасность . п. 152.
- ^ "Справочное руководство службы аутентификации и авторизации Java (JAAS)" . oracle.com . Корпорация Oracle . Архивировано из оригинального 26 сентября 2012 года . Проверено 22 мая 2012 года .
Внешние ссылки [ править ]
- Учебник JAAS
- jGuard: проект с открытым исходным кодом, который может защитить автономные или веб-приложения на основе JAAS.
- Мюссер, Джон; Фойер, Поль (23 сентября 2002 г.). "Все это ЯАС" . JavaWorld . Проверено 20 июля 2020 .
- Библиотека SPNEGO - проект GNU LGPL с открытым исходным кодом, который опирается на структуру JAAS для упрощения аутентификации и авторизации.