Данный компонент системы Semantic MDM реализуется на базе компонента KeyCloak обеспечивает:
Для взаимодействия с компонентами Semantic MDM требуется получение и использование токенов для аутентификации. Все запросы к API должны содержать заголовок с токеном в формате Bearer Token.
Получение токена: Для доступа к API необходимо получить токен с использованием одного из поддерживаемых методов аутентификации.
Обновление токена: Перед истечением срока действия токена необходимо запросить новый токен, повторив процесс аутентификации.
Использование токена: Во все запросы к 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) через веб-клиента компонента 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"
}
Пояснение полей ответа:
{
"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": "Фамилия"
}
Требования к разрабатываемым сервисам, расширяющих функционал системы: