1. Обзор
Безопасность является фундаментальной частью любого Java-приложения. Кроме того, мы можем найти множество фреймворков безопасности, которые могут решать проблемы безопасности. Кроме того, мы используем несколько терминов, обычно используемых в этих фреймворках, таких как субъект, принципал и пользователь.
В этом руководстве мы собираемся объяснить эти основные концепции фреймворков безопасности . Также мы покажем их взаимосвязь и различия.
2. Тема
В контексте безопасности субъект представляет собой источник запроса. Субъект — это объект , который получает информацию о ресурсах или изменяет ресурсы . Кроме того, субъектом также может быть пользователь, программа, процесс, файл, компьютер, база данных и т. д.
Например, человеку необходимо авторизовать доступ к ресурсам и приложениям для проверки подлинности источника запроса. В данном случае это лицо является субъектом.
Давайте посмотрим на наш пример, который реализовал базу на основе JAAS
:
Subject subject = loginContext.getSubject();
PrivilegedAction privilegedAction = new ResourceAction();
Subject.doAsPrivileged(subject, privilegedAction, null);
3. Главный
После успешной аутентификации у нас есть заполненный субъект со многими связанными идентификаторами, такими как роли, номер социального страхования (SSN) и т. д. Другими словами, эти идентификаторы являются принципалами, и субъект представляет их.
Например, лицо может иметь основной номер счета («87654-3210») и другие уникальные идентификаторы, отличающие его от других субъектов.
Давайте посмотрим, как создать UserPrincipal
после успешного входа в систему и добавить его в тему:
@Override
public boolean commit() throws LoginException {
if (!loginSucceeded) {
return false;
}
userPrincipal = new UserPrincipal(username);
subject.getPrincipals().add(userPrincipal);
return true;
}
4. Пользователь
Как правило, пользователь представляет человека, который обращается к ресурсам для выполнения какого-либо действия или выполнения рабочей задачи.
Кроме того, мы можем использовать пользователя в качестве принципала, а с другой стороны, принципал — это идентификатор, присвоенный пользователю. UserPrincipal
— отличный пример пользователя в среде JAAS
, рассмотренной в предыдущем разделе .
5. Разница между субъектом, принципалом и пользователем
Как мы видели в предыдущих разделах, мы можем представлять различные аспекты удостоверения одного и того же пользователя с помощью принципалов. Они являются подмножествами субъектов, а пользователи являются подмножествами принципалов, которые относятся к конечным пользователям или интерактивным операторам.
6. Заключение
В этом руководстве мы обсудили определение субъекта, принципала и пользователя, которые являются общими для большинства сред безопасности. Также мы показали разницу между ними.
Реализацию всех этих примеров и фрагментов кода можно найти в проекте GitHub .