Компонент SemanticIAM

Описание компонента:

Данный компонент системы Semantic MDM реализуется на базе компонента KeyCloak обеспечивает:

Аутентификация и авторизация пользователей в Semantic MDM:

Для взаимодействия с компонентами Semantic MDM требуется получение и использование токенов для аутентификации. Все запросы к API должны содержать заголовок с токеном в формате Bearer Token.

Общие правила работы с токенами

  1. Получение токена: Для доступа к API необходимо получить токен с использованием одного из поддерживаемых методов аутентификации.

  2. Обновление токена: Перед истечением срока действия токена необходимо запросить новый токен, повторив процесс аутентификации.

  3. Использование токена: Во все запросы к REST API и SOAP добавляйте заголовок Authorization с токеном(access_token):

Authorization: Bearer <token>

Получение токена по логину/паролю

Данный подход позволяет использовать штатного локального польователя системы в качестве техничекой учетной записи и получения токена с увеличенным сроком действия. Регистрация локального пользователя выполняется через веб-клиента системы Semantic MDM штатными средствами системы(Администрирование -> Пользователи).

POST http://keycloak:8180/realms/relamName/protocol/openid-connect/token
Request Body
client_id: "sdi-core-client"
username: "your-user"
password: "your-password"
grant_type: "password"

Параметры запроса, которые необходимо задать:

Получение токена по Client Credentials

Данный подход предполагает предварительную регистрацию и настройку клиента(Client) через веб-клиента компонента SemanticIAM, реализуемого на базе веб-клиента KeyCloak. При регистрации клиента(Client) можно определить роли, настройки срока действия токена, сессии и других параметров, под которым будет работать сервис под клиентской учетной записью.

POST http://keycloak:8180/realms/relamName/protocol/openid-connect/token
Request Body
client_id: "your-client"
client_secret: "secret"
grant_type: "client_credentials"

Параметры запроса, которые необходимо задать:

Клиента необходимо предварительно зарегистрировать в SemanticIAM.

Пример ответа

После успешного выполнения запроса вы получите ответ в формате JSON:

{
    "access_token": "ey..",
    "expires_in": 35999,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": "openid email profile"
}

Пояснение полей ответа:

Пример payload из access_token

{
    "exp": 1747393485,
    "iat": 1747393185,
    "auth_time": 1747385225,
    "jti": "8bc67626-48ab-440d-9e49-34b96bd47e41",
    "iss": "https://keycloak.semanticmdm.ru/realms/mdm",
    "aud": [
        "realm-management",
        "account"
    ],
    "sub": "3d3bb5bc-22a1-4f26-8804-172569dd877e",
    "typ": "Bearer",
    "azp": "sdi-web-client",
    "sid": "bbae35f5-a2d9-49f8-a244-1f4ee58eed9e",
    "acr": "0",
    "allowed-origins": [
        "*"
    ],
    "realm_access": {
        "roles": [
            "editData",
            "similaritySearch",
            "Все пользователи",
            "viceSetup",
            "viewHistory",
            "read",
            "readSecurity",
            "readUserJournal",
            "runReports",
            "manageApplications",
            "editDataWithoutApplications",
            "editMetadata",
            "manageSecurity",
            "exportPatterns",
            "default-roles-test",
            "editExpirables",
            "offline_access",
            "rootNodeAccess",
            "sudo",
            "sysAdministration",
            "uma_authorization"
        ]
    },
    "resource_access": {
        "realm-management": {
            "roles": [
                "view-identity-providers",
                "view-realm",
                "manage-identity-providers",
                "impersonation",
                "realm-admin",
                "create-client",
                "manage-users",
                "query-realms",
                "view-authorization",
                "query-clients",
                "query-users",
                "manage-events",
                "manage-realm",
                "view-events",
                "view-users",
                "view-clients",
                "manage-authorization",
                "manage-clients",
                "query-groups"
            ]
        },
        "account": {
            "roles": [
                "manage-account",
                "manage-account-links",
                "view-profile"
            ]
        }
    },
    "scope": "openid profile email",
    "email_verified": false,
    "name": "Имя Фамилия",
    "preferred_username": "test_user",
    "given_name": "Имя",
    "middle_name": "Отчество",
    "family_name": "Фамилия"
}

Список доступных привилегий Semantic MDM(realm_access\roles)

Требования к разработке новых сервисов

Требования к разрабатываемым сервисам, расширяющих функционал системы: