Проблемы с правами доступа в Camunda

Пользователь

от nekikryu , в категории: Java , 2 года назад

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

Все настраивается через Docker. Build Camunda:

1
2
FROM camunda/camunda-bpm-platform:run-7.17.0
COPY production.yml /camunda/configuration/production.yml

.yml setup file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
camunda.bpm:
  webapp:
    csrf:
      enable-same-site-cookie: true
      same-site-cookie-option: STRICT
    header-security:
      hsts-disabled: false
      content-security-policy-value: base-uri 'self';
        default-src 'self' 'unsafe-inline' 'unsafe-eval';
        img-src 'self' data:;
        block-all-mixed-content;
        form-action 'self';
        frame-ancestors 'none';
        object-src 'none';
        sandbox
        allow-forms
        allow-scripts
        allow-same-origin
        allow-popups
authorization:
    enabled: true
    user-id-claim: sub
    administratorGroupName: camunda-admin
    authorizationCheckRevokes: never
  generic-properties:
    properties:
      enable-password-policy: true
   admin-auth:
     enabled: true
     administrator-user-name: admin
     administrator-group-name: admins

Проект строится, но авторизация до сих пор не работает, судя по документации, то все эти настройки максимум, что нужно сделать, чтобы он заработал. Кто настраивал авторизацию, подскажите что не так?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaren , 2 года назад

@nekikryu В вашем файле настройки вы указали параметр authorization.enabled: true, который включает авторизацию, и вы также указали authorization.administratorGroupName: camunda-admin, который определяет группу, которая будет иметь права администратора.


Однако, вы не указали, какие группы пользователей должны иметь доступ к каким задачам и процессам. Для этого вы должны настроить правила авторизации в файле bpm-platform.xml.

Вот пример настройки, которую вы можете использовать в своем файле:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<authorization>
  <default-authorization enabled="false">
    <authorization-rules>
      <authorization-rule name="Grant Authorization Groups">
        <description>Grant access to groups that match the task candidate groups.</description>
        <resource>task</resource>
        <decision-strategy>unanimous</decision-strategy>
        <permissions>
          <permission>READ</permission>
          <permission>UPDATE</permission>
          <permission>CREATE</permission>
        </permissions>
        <resource-match-pattern>
          <match-pattern>^.*$</match-pattern>
        </resource-match-pattern>
        <rule>
          <if>
            <condition>task.taskDefinitionKey == 'myTask'</condition>
            <condition>task.candidateGroups != null</condition>
          </if>
          <then>
            <grant>
              <permission>READ</permission>
              <permission>UPDATE</permission>
              <permission>CREATE</permission>
              <resource-id-mapper>org.camunda.bpm.engine.impl.util.DefaultResourceAuthorizationProvider$1</resource-id-mapper>
              <resource-name-mapper>org.camunda.bpm.engine.impl.util.DefaultResourceAuthorizationProvider$1</resource-name-mapper>
              <group-id-to-mapper>org.camunda.bpm.engine.impl.util.DefaultUserAuthorizationProvider$2</group-id-to-mapper>
            </grant>
          </then>
        </rule>
      </authorization-rule>
    </authorization-rules>
  </default-authorization>
</authorization>

В этом примере вы можете видеть, как правило авторизации называется "Grant Authorization Groups", и оно дает доступ к задачам, которые имеют ключ "myTask", для групп пользователей, указанных в поле "candidateGroups" задачи.

Вы можете изменить это правило или создать свое собственное, чтобы настроить авторизацию в соответствии с вашими потребностями.

Пользователь

от autumn_parker , 23 дня назад

@nekikryu 

Для корректной настройки авторизации в Camunda необходимо убедиться, что права и группы пользователей корректно определены в вашей конфигурации. Однако приведенный вами пример использует устаревший механизм определения правил авторизации. В современных версиях Camunda, начиная с 7.15, подход к созданию и управлению авторизациями сменился на более гибкий и управляемый через API или интерфейс администрирования.


Для настройки базовой авторизации необходимо:

  1. Убедиться, что вы используете правильные настройки в вашем production.yml: Убедитесь, что authorization.enabled: true активирует процесс авторизации. Проверьте, что administratorGroupName: camunda-admin правильно определен.
  2. Настроить авторизации через интерфейс администрирования: Зайдите в интерфейс администрирования Camunda. Перейдите к вкладке Управление авторизациями. Создайте необходимые авторизации для пользователей и групп, назначив их ресурсам, таким как приложения (например, Tasklist, Cockpit).
  3. Использовать Camunda API либо скрипты для автоматического создания авторизаций (опционально): Camunda предоставляет API для управления пользователями и авторизациями, которые могут быть использованы для написания скриптов установки необходимых авторизаций на начальных этапах развертывания.
  4. Проверка конфигурации во время выполнения: Входите в систему как администратор и проверяйте права пользователей на доступ к различным элементам системы. Через административный интерфейс вы можете добавить или убрать права группам или конкретным пользователям, если это необходимо.


Таким образом, центральный шаг — это правильная конфигурация вашей системы через интерфейс или API для управления авторизациями и правами доступа.

Похожие обсуждения:

Как запустить команду в powershell с правами администратора?
Как создать файл с правами 777 в node.js?
Как управлять правами доступа к файлам и директориям внутри Docker-контейнера?
Как запустить приложение с правами администратора из приложения на golang?
Как управлять пользователями и их правами в InfluxDB?
Какие уровни доступа и прав доступа можно настроить в TeamCity?