Руководство по работе с сервером | Управление доступом на основе ролей

задняя часть Spring Безопасность API
Руководство по работе с сервером | Управление доступом на основе ролей

Оригинальный адрес:Руководство по работе с сервером | Управление доступом на основе ролейадрес блога:blog.720ui.com/

Управление доступом на основе ролей, английский язык — это управление доступом на основе ролей, или сокращенно RBAC. Установив соответствующие отношения между пользователями и ролями, каждый пользователь может иметь несколько ролей, и каждая роль может иметь несколько разрешений. Управление доступом на основе ролей определяет несколько разных ролей, а разные роли фактически представляют собой набор разрешений. В управлении доступом на основе ролей разные роли делятся на высокие и низкие роли.Роли с высоким уровнем привилегий могут получить доступ к ресурсам ролей с низким уровнем привилегий, но роли с низким уровнем привилегий часто не могут получить доступ к ресурсам ролей с высоким уровнем привилегий. Например, в образовательной системе домашних заданий есть роль учителя и роль учащегося. И роль учителя, и роль учащегося имеют разрешение на просмотр заданий, но роль учащегося не имеет разрешения на утверждение заданий. Только роль учителя имеет разрешение для утверждения заданий. Если роль студента может это сделать, может иметь место несанкционированный доступ. В то же время управление доступом на основе ролей соблюдает минимальные привилегии и должно предоставлять наименьшую роль, необходимую для выполнения своей задачи, тем самым предотвращая плохие действия пользователей.

RBAC — это модель авторизации «пользователь-роль-разрешение», которая в основном делится на базовую модель RBAC0, иерархическую модель ролей RBAC1, модель ограничений RBAC2 и унифицированную модель RBAC3. Среди них RBAC0 является ядром RBAC, включая пользователей, роли, разрешения и сеансы. RBAC1 является расширением RBAC0, который представляет собой модель распределения ролей RBAC и вводит концепцию наследования ролей. RBAC2 расширен на основе RBAC0 и вводит ограничение взаимоисключающих ролей. Взаимоисключающие роли относятся к двум ролям, чьи соответствующие разрешения ограничивают друг друга. Кроме того, он также ограничивает роли, которые имеет пользователь, ограничены разрешения, которые имеет роль ограничены, и чтобы получить более высокие привилегии, вам сначала нужно иметь низкоуровневую привилегию. RBAC3 интегрирует RBAC1 и RBAC2 на основе RBAC0, поэтому RBAC3 — это модель с иерархией ролей и ограничениями.

В этой статье в основном представлена ​​модель авторизации «пользователь-роль-разрешение», основанная на базовой модели RBAC0. Управление доступом на основе ролей позволяет каждому пользователю иметь несколько ролей, а каждой роли — несколько разрешений, устанавливая соответствующие отношения между пользователями и ролями.

Среди них разрешения ограничивают связанные операции, которые может выполнять пользователь. Например, в образовательной системе домашних заданий есть роли учителя и ученика. Роль ученика имеет разрешения на просмотр и запись заданий, а роль учителя — разрешения на просмотр и утверждение заданий. Поэтому пользователи с ролью ученика не могут их утверждать. эксплуатация работы. Разрешения могут действовать на такие ресурсы, как меню, интерфейсы API и файлы.

В случае большого количества пользователей, пользователи могут быть сгруппированы. На данный момент у группы пользователей есть роль, тогда у всех пользователей в группе пользователей будет эта роль. Другими словами, после введения понятия группы пользователей можно установить соответствующую связь между группой пользователей и ролью, тогда все пользователи в группе пользователей будут косвенно связаны с ролью.

В реальном процессе разработки бизнеса как Spring Security, так и Apache Shiro на языке Java могут устанавливать контроль доступа на основе ролей. Здесь демонстрируется конфигурация перехвата разрешений Spring Security, в которой устанавливаются права доступа разных ролей к URL-адресам.

@EnableWebMvcSecurity
public class ApiSecurityConfig {
    @Override
    protected void onConfigure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            // 匹配"/students/**"的所有 GET 操作,无需要任何身份认证
            .antMatchers(HttpMethod.GET, "/students/**").permitAll()
            // 匹配"/students/**"的所有 POST 操作,需要用户拥有 teacher 角色
            .antMatchers(HttpMethod.POST, "/students/**").hasAuthority("teacher")
            // 匹配"/students/**"的所有(其他)操作,需要用户拥有 admin 角色
            .antMatchers("/students/**").hasAnyAuthority("admin");
            // 其他的 URL 地址均需要加身份认证
            .antMatchers("/**").anonymous().anyRequest().authenticated();
    }
 
    @Override
    public void configure(WebSecurity web) throws Exception {
    }
}

Подводя итог, управление доступом на основе ролей устанавливает соответствие между пользователями и ролями, так что каждый пользователь может иметь несколько ролей, а каждая роль может иметь несколько разрешений. Пользователи работают и получают доступ к ресурсам в соответствии со своими ролями.

(Заканчивать)

Другие интересные статьи можно найти в общедоступном аккаунте WeChat «Server Thinking»!