Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Служба аутентификации и авторизации 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

Ссылки [ править ]

  1. ^ a b Теодор Дж. Шрейдер; Брюс А. Рич; Энтони Дж. Надалин. Java и интернет-безопасность . п. 152.
  2. ^ "Справочное руководство службы аутентификации и авторизации Java (JAAS)" . oracle.com . Корпорация Oracle . Архивировано из оригинального 26 сентября 2012 года . Проверено 22 мая 2012 года .

Внешние ссылки [ править ]

  • Учебник JAAS
  • jGuard: проект с открытым исходным кодом, который может защитить автономные или веб-приложения на основе JAAS.
  • Мюссер, Джон; Фойер, Поль (23 сентября 2002 г.). "Все это ЯАС" . JavaWorld . Проверено 20 июля 2020 .
  • Библиотека SPNEGO - проект GNU LGPL с открытым исходным кодом, который опирается на структуру JAAS для упрощения аутентификации и авторизации.