Перейти к основному содержимому

Основы контекста безопасности: пользователь, субъект и принципал

· 2 мин. чтения

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 .