Платформа 3V/DataManager/Описание модели настроек DataManager: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 82: Строка 82:
 
|| string (строка)  
 
|| string (строка)  
 
|-
 
|-
| TokenRequestUrl ||  
+
| TokenRequestUrl || Ссылка из адресной строки перед авторизацией в приложении || string (строка)  
* Для TokenRequestUrl ссылка берется из адресной строки перед авторизацией в приложении (для какого приложения необходим DataManager - из такого приложения и необходимо взять ссылку
 
* Копируем ссылку из адресной строки до "openid-connect/" и добавляем "token"
 
(''ПРИМЕР'': ссылка для корпоративного портала перед авторизацией пользователя выглядит следующим образом - "https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/auth?response_type=code&client_id=corp-engine&state=WFl3MDBGeS52TXJjYkl5bmFDeFBoSi5QU1VYUm1EYm1-ckJOSXBPTnFiTVhD&redirect_uri=https%3A%2F%2Fcorp-portal.x-service.online%2Fapp%2F&scope=openid%20profile&code_challenge=A5_wW-7WsXwMBgHPXxUiJ5Wh6Cwvzs83bzOcW4fU8jQ&code_challenge_method=S256&ui_locales=ru", для TokenRequestUrl необходима только '''https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/''', далее к этой ссылке добавляем "token", в итоге получаем необходимый запрос для авторизации для DataManager - '''https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/token''')
 
|| string (строка)  
 
 
|-
 
|-
| ClientId || Брать из кк (realm - clients - взять нужного) || string (строка)
+
| ClientId || Идентификатор клиента, который берется из keycloakа || string (строка)
 
|-
 
|-
| ClientSecret || Брать из кк (realm - clients - взять нужного) - credentials - поле "secret" || string (строка)
+
| ClientSecret || Keycloak - realm - clients - раздел "Credentials" - поле "Secret" || string (строка)
 
|-
 
|-
 
| UserName || Логин для авторизации на стенде ''(данное поле добавляется для дискриминатора '''"PasswordAuthenticationSettingsDto"''''') || string (строка)
 
| UserName || Логин для авторизации на стенде ''(данное поле добавляется для дискриминатора '''"PasswordAuthenticationSettingsDto"''''') || string (строка)
Строка 118: Строка 114:
 
               }
 
               }
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
* Для TokenRequestUrl ссылка берется из адресной строки перед авторизацией в приложении (для какого приложения необходим DataManager - из такого приложения и необходимо взять ссылку
 +
* Копируем ссылку из адресной строки до "openid-connect/" и добавляем "token"
 +
(''ПРИМЕР'': ссылка для корпоративного портала перед авторизацией пользователя выглядит следующим образом - "https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/auth?response_type=code&client_id=corp-engine&state=WFl3MDBGeS52TXJjYkl5bmFDeFBoSi5QU1VYUm1EYm1-ckJOSXBPTnFiTVhD&redirect_uri=https%3A%2F%2Fcorp-portal.x-service.online%2Fapp%2F&scope=openid%20profile&code_challenge=A5_wW-7WsXwMBgHPXxUiJ5Wh6Cwvzs83bzOcW4fU8jQ&code_challenge_method=S256&ui_locales=ru", для TokenRequestUrl необходима только '''https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/''', далее к этой ссылке добавляем "token", в итоге получаем необходимый запрос для авторизации для DataManager - '''https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/token''')
  
 
=== Токен доступа ===
 
=== Токен доступа ===

Версия 05:46, 19 сентября 2022

Модель Json разделена на две части - Source (источник данных) и Destination (приёмник данных)

Источник данных (Source)

Дискриминатор

discriminator - дискриминатор (тип данных - string)

  • UrlDataManagerSource - в случае, если источник данных ссылка на ресурс

Если источник данных - ссылка, то в SOURCE необходимо указать Uri, Credentials, Headers:

1 "Source": {
2 	        "discriminator": "UrlDataManagerSource",
3 	        "Uri": "",
4             "Credentials": "",
5             "Headers": ""
6 	      },
  • ConstantDataManagerSource - если источник данных файл

Если источник данных - файл, то в SOURCE достаточно прописать только дискриминатор:

1 "Source": {
2             "discriminator": "ConstantDataManagerSource"
3           },

Унифицированный идентификатор ресурса

Uri - унифицированный идентификатор ресурса

DataManager поддерживает следующие источники:

  • Postgres
  • Любой get/post запрос

ВАЖНО: необходимо, чтобы запрос, прописанный в Uri возвращал данные в формате json

Стенд Пример Пояснение
finance
1 "Source": {
2             "discriminator": "UrlDataManagerSource",
3             "Uri": "https://fmpcloud.io/api/v3/symbol/available-indexes?apikey=887f267b885bd2384c2b3ef0bfbee3c9" 
4           },
Если перейти по ссылке, то данные представляются в json-формате
double.dev
1 "Source": {
2             "discriminator": "UrlDataManagerSource",
3             "Uri": "http://filestorage/api/File/e0e88d78-339e-496c-baa8-d5fb18848692" 
4           },
Ссылка на get-запрос файлового хранилища

(как получить ссылку на файл из файлового хранилища см ниже)

corp-portal
1 "Source": {
2             "discriminator": "UrlDataManagerSource",
3             "Uri": "https://bs-extension.bright-soft.org/atlassian-adapter/Jira/Projects" 
4           },
Ссылка на get-запрос сервиса atlassian-adapter

Для того, чтобы получить ссылку на файл, необходимо сделать следующее:

  1. Получить идентификатор файла с помощью вычислимого атрибута
  2. Перейти в файловое хранилище проекта (filestorage) и найти get-метод File/{fileid}
  3. Заполнить параметр вызова "fileid" найденным в первом пункте значением (некоторые стенды дополнительно в качестве параметра запуска принимают тенант), запустить метод
  4. После запуска метода скопировать Request URL, оставить строку в формате "http://filestorage/api/File/НАБОР_ЦИФР" (набор цифр, в данном случае - fileid)

В случае, если данные предоставляются не из файлового хранилища, Request URL следует оставить без изменений

Параметры авторизации

Credentials - параметры авторизации Credentials содержит следующие настройки:

Поле Описание Тип
discriminator
  • ConfidentialClientAuthenticationSettingsDto - аутентификация конфиденциального клиента
  • PasswordAuthenticationSettingsDto - аутентификация с помощью логина и пароля
string (строка)
TokenRequestUrl Ссылка из адресной строки перед авторизацией в приложении string (строка)
ClientId Идентификатор клиента, который берется из keycloakа string (строка)
ClientSecret Keycloak - realm - clients - раздел "Credentials" - поле "Secret" string (строка)
UserName Логин для авторизации на стенде (данное поле добавляется для дискриминатора "PasswordAuthenticationSettingsDto") string (строка)
Password Пароль для авторизации на стенде(данное поле добавляется для дискриминатора "PasswordAuthenticationSettingsDto") string (строка)

Настройка для Credentials для авторизации по логину/паролю:

1 "Credentials": {
2                  "discriminator": "PasswordAuthenticationSettingsDto",
3                  "TokenRequestUrl": "https://3v.3v-group.net/auth/realms/trivium/protocol/openid-connect/token",
4                  "clientId": "clientid",
5                  "clientSecret": "5gq428rz-wpx1-5751-b0r1-h4x5wb9m5210",
6                  "UserName": "username",
7                  "Password": "password"
8               }

Настройка для Credentials для аутентификации конфиденциального клиента:

1 "Credentials": {
2                  "discriminator": "ConfidentialClientAuthenticationSettingsDto",
3                  "TokenRequestUrl": "https://smart-id-test.mos.ru/iam/auth/realms/dev/protocol/openid-connect/token",
4                  "clientId": "clientid",
5                  "clientSecret": "5gq428rz-wpx1-5751-b0r1-h4x5wb9m5210"
6                }
  • Для TokenRequestUrl ссылка берется из адресной строки перед авторизацией в приложении (для какого приложения необходим DataManager - из такого приложения и необходимо взять ссылку
  • Копируем ссылку из адресной строки до "openid-connect/" и добавляем "token"

(ПРИМЕР: ссылка для корпоративного портала перед авторизацией пользователя выглядит следующим образом - "https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/auth?response_type=code&client_id=corp-engine&state=WFl3MDBGeS52TXJjYkl5bmFDeFBoSi5QU1VYUm1EYm1-ckJOSXBPTnFiTVhD&redirect_uri=https%3A%2F%2Fcorp-portal.x-service.online%2Fapp%2F&scope=openid%20profile&code_challenge=A5_wW-7WsXwMBgHPXxUiJ5Wh6Cwvzs83bzOcW4fU8jQ&code_challenge_method=S256&ui_locales=ru", для TokenRequestUrl необходима только https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/, далее к этой ссылке добавляем "token", в итоге получаем необходимый запрос для авторизации для DataManager - https://api.x-service.online/auth/realms/corp-portal/protocol/openid-connect/token)

Токен доступа

Headers - токен доступа

1 вариант - тенант

"Headers": { "namespace": "landscaping" }

2 вариант - Bearer <token>

Токен берем из средств разработчика (f12 или ctrl+f12)

"Headers": {"Authorization": "Bearer <token>"}

3 вариант - секрет

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

"Headers": { "secret": "Ke2QSqWkX4FgyKnx6RYnYFLyqA2MHTq9Jvdk" }

Приемник данных (Destination)

Название полей Описание Тип
discriminator Дискриминатор:
  • Если приемник - справочник, то "DictionaryDataOptions"
  • Если приемник - показатель, то "IndicatorDataOption
Текст ячейки
SaveMode
  • DictionaryClient - запись через апи справочников (стоит по умолчанию, можно не прописывать)
  • Postgres - запись через БД (в данном случае следует указать)
string (строка)
mapperOptions[] Настройки маппинг string (строка)
expressions[] Настройки выражений (при необходимости) коллекция полей
clearData Очистить данные (для справочника (если дискриминатор - DictionaryDataOptions) добавлена настройка для частичной очистки данных) boolean (логический тип)
dictionaryIdent Код справочника-приемника данных string (строка)

Шаблон для Destination:

1 "Destination": {
2                  "discriminator": "",
3                  "SaveMode": "Postgres",
4                  "mapperOptions": [ {}, {}],
5                  "expressions": [{}],
6                  "clearData": false,
7                  "dictionaryIdent": ""
8                }

Настройки маппинга

Все настройки маппинга записываются в поле mapperOptions

Количество столбцов источника данных, должны соответствовать количеству столбцов приемника данных

Название поля Описание Тип
propertyName Наименование данных из источника string (строка)
filedName Название столбца-приемника string (строка)
dataType Тип столбца-приемника

(тип атрибута-источника и атрибута-приемника должен совпадать)

string (строка)
isPrimary Первичный ключ (обычно первичным ключом является столбец с уникальными значениями, то есть идентификатор) boolean (логический тип)
ExpressionId Идентификатор выражения (необязательно, только если для данных требуется выражение) string (строка)
discriminator Дискриминатор (MapperOption) string (строка)

Шаблон для mapperOptions:

 1 "mapperOptions": [
 2                    {
 3                     "propertyName": "",
 4                     "filedName": "",
 5                     "dataType": "",
 6                     "isPrimary": true,
 7                     "discriminator":"MapperOption"
 8                    },
 9                    {
10                     "propertyName": "",
11                     "filedName": "",
12                     "dataType": "",
13                     "isPrimary": false,
14                     "discriminator":"MapperOption",
15                     "ExpressionId": 1
16                    },
17                  ]

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

Название поля Описание Тип
Id Идентификатор выражения integer (целое число)
Expression Условие для выражения string (строка)
Variables Переменные, которые используются в выражении string (строка)

Шаблон для выражений:

1 "expressions":[
2                 {
3                   "Id": 1,       
4                   "Expression": "",
5                   "Variables": {"1": "", "2": ""}
6                 }           
7               ]