Настройка витрины#

Для настройки витрины Blitz Panel выполните следующие действия:

  1. Положите в каталог /usr/share/identityblitz/blitz-panel/static/resources/icons/ иконки приложений.

    Примечание

    Поддерживаются следующие форматы:

    • SVG,

    • PNG, максимум 128px по минимальной стороне.

  2. В Blitz Identity Provider создайте приложение для подключения Blitz Panel к Blitz Identity Provider по протоколу OAuth 2.0.

    ../_images/blitz-panel-settings-parameters.png

    Укажите заданные при установке Blitz Panel client_id и client_secret.

    ../_images/blitz-panel-settings-app.png

    Адреса запросов к Blitz Identity Provider для аутентификации пользователя, указанные в настройках протокола, далее необходимо указать в файле конфигурации /etc/blitz-panel/app.conf.

    ../_images/blitz-panel-settings-url.png

    Совет

    Значения client_id и client_secret при необходимости можно поменять в том же файле конфигурации.

  3. Откройте файл конфигурации /etc/blitz-panel/app.conf. В секции session -> oauth задайте настройки подключения приложения Blitz Panel к Blitz Identity Provider по протоколу OAuth 2.0.

    • name: произвольное имя подключения;

    • clientId: проверьте, совпадает ли идентификатор приложения client_id с указанным в Blitz Identity Provider.

    • clientSecret: проверьте, совпадает ли секретный ключ приложения с указанным в Blitz Identity Provider.

    • logoutUrl: URL, на который Blitz Panel будет направлять запрос в Blitz Identity Provider на выход пользователя.

    • authUrl: URL, на который Blitz Panel будет направлять запрос в Blitz Identity Provider на проведение авторизации пользователя.

    • tokenUrl: URL, на который Blitz Panel будет направлять запрос в Blitz Identity Provider на получение или обновление маркера доступа.

    • me: URL, на который Blitz Panel будет направлять запрос в Blitz Identity Provider на получение данных о пользователе (url), и атрибут для поиска пользователя в хранилище (subjectIdAttr).

    • scopes: список разрешений, которые будут доступны Blitz Panel.

    "session": {
        "oauth": {
            "name": "Blitz IdP",
            "clientId": "CHANGE_CLIENT_ID",
            "clientSecret": "CHANGE_CLIENT_SECRET",
            "logoutUrl": "https://CHANGE_IDP_DOMAIN/blitz/login/logout",
            "authUrl": "https://CHANGE_IDP_DOMAIN/blitz/oauth/ae",
            "tokenUrl": "https://CHANGE_IDP_DOMAIN/blitz/oauth/te",
            "me": {
                "url": "https://CHANGE_IDP_DOMAIN/blitz/oauth/me",
                "subjectIdAttr": "sub"
            },
            "scopes": [
                "openid",
                "profile"
            ]
        },
        ...
    },
    ...
    
  4. При необходимости задайте параметры сессии пользователя: URL, на который будет переадресован пользователь после выхода, значение TTL, максимальный период отсутствия активности в секундах, период проверки наличия сессии в миллисекундах, имя создаваемой cookie и др.

    "session": {
        ...
        "postLogoutUrl": "/blitz/panel",
        "ttlInSec": 36000,
        "inactivityPeriodInSec": 3600,
        "checkSessionPeriodInMs": 1000,
        "cookie": {
            "name": "scs",
            "path": "/blitz/panel",
            "transient": true
        },
        "useCompression": false,
        "encodingKey": "CHANGE_SCS_ENC",
        "hmacKey": "CHANGE_SCS_HMAC"
    },
    ...
    
  5. Секция apps -> sources содержит группы приложений, которые можно сформировать по произвольным признакам (статические, динамические и пр.). Для каждой группы указывается имя, список приложений в составе группы и правила, определяющие, для каких пользователей отображаются приложения.

    В секции apps -> sources-> rules задайте правила, определяющие, для каких пользователей будут отображаться те или иные приложения.

    Каждое правило состоит из следующих частей:

    • name: имя правила.

    • conditions: условия выбора пользователей.

      Поддерживается два типа условий:

      • "typ": "userGroup"группа пользователей. Необходимо указать имя профиля группы и ее идентификатор.

      • "typ": "userClaims" — гибкий выбор пользователей на основании утверждений относительно их атрибутов. Условие этого типа может содержать утверждения по нескольким атрибутам. Для того чтобы пользователь был выбран согласно условию, он должен удовлетворять всем утверждениям в нем.

      Внимание

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

    • tags: метки, связывающие условия выбора пользователей и приложения.

      Поддерживаются следующие типы меток:

      • произвольный параметр (например, role, department и пр.);

      • идентификатор приложения (задается в списке appId).

      Внимание

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

  6. В секции apps -> sources -> apps задайте список подключенных к Blitz Identity Provider приложений, которые будут отображаться на витрине. Для каждого приложения укажите следующие параметры:

    • id: идентификатор приложения в Blitz Identity Provider.

    • name: имя приложения, которое будет отображаться на витрине, на необходимых языках.

    • url: URL стартовой страницы приложения.

    • icon: имя файла иконки в каталоге /usr/share/identityblitz/blitz-panel/static/resources/icons/.

    • tags: метки, определяющие для каких пользователей на витрине будет отображаться приложение согласно заданным выше правилам (опционально).

    • desc: описание приложения на необходимых языках.

    Пример настройки правил и списка приложений#
    "apps": {
        "sources": [
            {
                "name": "Static Applications",
                "type": "static",
                "apps": [
                    {
                        "id": "dev_portal",
                        "name": {
                          "ru": "Портал разработчика 24"
                        },
                        "url": "https://my.domain.com/dev/portal",
                        "icon": "confluence.svg",
                        "tags": {
                            "role": [
                                "admin",
                                "sys_admin"
                            ]
                        }
                    },
                    {
                        "id": "jira",
                        "url": "https://my.domain.com/dev/jira",
                        "name": {
                          "ru": "Jira"
                        },
                        "icon": "jira.svg",
                        "tags": {
                            "role": [
                                "admin",
                                "sys_admin"
                            ]
                        }
                    },
                    {
                        "id": "test-app",
                        "url": "https://my.domain.com/dev/test",
                        "name": {
                          "ru": "Тестовое приложение"
                        }
                    },
                    {
                        "id": "atom",
                        "url": "https://my.domain.com/dev/atom",
                        "name": {
                          "ru": "Atom"
                        },
                        "desc": {
                          "ru": "Редактор кода Atom",
                          "en": "Atom is your essential companion"
                        }
                    },
                    {
                        "id": "call_center",
                        "url": "https://my.domain.com/dev/call",
                        "name": {
                          "ru": "Центр обработки звонков"
                        },
                        "desc": {
                          "ru": "Для управления Call-центром"
                        },
                        "tags": {
                            "role": [
                                "admin",
                                "sys_admin"
                            ]
                        }
                    },
                    {
                        "id": "web_mail",
                        "name": {
                          "ru": "Корпоративная почта"
                        },
                        "desc": {
                          "ru": "Web-интерфейс корпоративной почты"
                        },
                        "icon": "gmail.svg",
                        "url": "https://my.domain.com/dev/portal",
                        "tags": {
                            "role": [
                                "sys_admin"
                            ]
                        }
                    },
                    {
                        "id": "yandex",
                        "url": "https://my.domain.com/dev/yandex",
                        "name": {
                          "ru": "Поисковая система и почта"
                        },
                        "desc": {
                          "ru": "Web-интерфейс поисковой системы Yandex"
                        }
                    }
                ],
                "rules": [
                    {
                        "name": "admin_role",
                        "conditions": [
                            {
                                "typ": "userGroup",
                                "profile": "main_group_profile",
                                "id": "app_admin"
                            },
                            {
                                "typ": "userClaims",
                                "claims": {
                                    "company_type": "IT",
                                    "position": [
                                        "head",
                                        "master"
                                    ]
                                }
                            },
                            {
                                "typ": "userClaims",
                                "claims": {
                                    "company_name": "Моя компания"
                                }
                            }
                        ],
                        "tags": {
                            "appId": [
                                "dev_portal",
                                "yandex"
                            ],
                            "role": [
                                "admin",
                                "sys_admin"
                            ]
                        }
                    },
                    {
                        "name": "atom",
                        "conditions": [
                            {
                                "typ": "userClaims",
                                "claims": {
                                    "tags": [
                                        "atom"
                                    ]
                                }
                            }
                        ],
                        "tags": {
                            "appId": [
                                "atom"
                            ]
                        }
                    }
                ]
            }
        ]
    },
    ...
    
  7. Добавьте сервис blitz-panel в автозапуск и запустите его:

    systemctl enable blitz-panel
    systemctl start blitz-panel