This commit is contained in:
2023-11-29 15:57:26 +03:00
parent a85ad3acd5
commit cd741b7f11
36 changed files with 995 additions and 145 deletions

172
README.md
View File

@@ -168,7 +168,7 @@ import (
func main() {
// Парсинг конфигурации из JSON-файла
cfg := config.ParseConfigJSON("<PATH>")
cfg, _ := config.ParseConfigJSON("<PATH>")
}
```
@@ -635,7 +635,7 @@ filtered := resp.
```go
func main() {
// Чтение конфигурации из файла
cfg := config.ParseConfigJSON("<PATH>")
cfg, _ := config.ParseConfigJSON("<PATH>")
// Создание клиента
client := decort.New(cfg)
@@ -864,7 +864,7 @@ import (
func main() {
// Парсинг конфигурации из YAML-файла
legacyCfg := config.ParseLegacyConfigYAML("<PATH>")
legacyCfg, _ := config.ParseLegacyConfigYAML("<PATH>")
}
```
@@ -969,21 +969,43 @@ func main() {
Работа с BVS клиентом применяется для пользователей, которые используют для авторизации BVS.
### Настройка параметров BVS в кабинете администратора
Для корректной работы функции обновления токена необходимо соблюдать следующие условия:
на странице администратора по следующему пути: домены-<имя вашего домена>-(символ i)-токены
- параметр "Время жизни токена доступа" - устанавливается для всего домена. Не применяется есть по следующему пути: безопасность-клиентские_системы-(символ i)-токены-"Время жизни токена доступа" не выставлено иное время, которое имеет больший приоритет для конкретной клиентской системы
- параметр "Время простоя сессии" - время жизни токена обновления. В случае указания количества минут меньше, чем время жизни токена, то обновление токена будет работать некорректно. Редомендуется указывать время или равное или больше времени жизни токена
- параметр "Максимальное время жизни сессии" - время в течение которого возможно производить обновление токена. Если данный параметр будет равен времени жизни токена, то обновление токена будет работать некорректно. Редомендуется указывать время больше времени жизни токена
### Настройка конфигурации BVS клиента
Сначала, необходимо создать переменную конфигурации клиента. Конфигурация состоит как из обязательных, так и необязательных полей.
| Поле | Тип | Обязательный | Описание |
| ------------- | ------ | ------------ | ------------------------------------------------------------------ |
| Username | string | Да | username legacy пользователя |
| Password | string | Да | пароль legacy пользователя |
| DecortURL | string | Да | URL адрес платформы, с которой будет осуществляться взаимодействие |
| SSOURL | string | Да | URL адрес сервиса аутентификации и авторизации |
| Domain | string | Да | Имя домена |
| Retries | uint | Нет | Кол-во неудачных попыток выполнения запроса, по умолчанию - 5 |
| Timeout | config.Duration | Нет | Таймаут HTTP клиента, по умолчанию - без ограничений |
| SSLSkipVerify | bool | Нет | Пропуск проверки подлинности сертификата |
| Поле | Тип | Обязательный | Описание |
| ------------- | --------------------------------------------- | ------------ | ------------------------------------------------------------------ |
| Username | string | Да | username пользователя |
| Password | string | Да | пароль пользователя |
| AppID | string | Да | app_id ключа для выполнения запросов |
| AppSecret | string | Да | app_secret ключ для выполнения запроса |
| DecortURL | string | Да | URL адрес платформы, с которой будет осуществляться взаимодействие |
| SSOURL | string | Да | URL адрес сервиса аутентификации и авторизации |
| Domain | string | Да | Имя домена |
| Retries | uint | Нет | Кол-во неудачных попыток выполнения запроса, по умолчанию - 5 |
| Timeout | config.Duration | Нет | Таймаут HTTP клиента, по умолчанию - без ограничений |
| SSLSkipVerify | bool | Нет | Пропуск проверки подлинности сертификата |
| Token | struct{} [см. ниже](#описание-структуры-token)| Нет | JWT токен |
| PathCfg | string | Нет | Путь записи конфигурации в файл |
| PathToken | string | Нет | Путь записи токена в файл |
| TimeToRefresh | uint | Нет | Количество минут, за сколько до истечения срока действия токена выполнится его обновление, по умолчанию - 1 минута |
### Описание структуры token
| Параметр | Тип | Описание |
| ------------ | ------ | ------------------------------- |
| AccessToken | string | Токен |
| TokenType | string | Тип токена |
| RefreshToken | string | Токен для запроса на обновление |
| Expiry | time | Время жизни токена |
#### Пример конфигурации BVS клиента
@@ -1022,7 +1044,24 @@ import (
func main() {
// Парсинг конфигурации из YAML-файла
BVSCfg := config.ParseConfigBVSYAML("<PATH>")
BVSCfg, _ := config.ParseConfigBVSYAML("<PATH>")
}
```
#### Парсинг BVS токена из файла
Также возможно создать переменную токена из JSON или YAML файла, используя функцию `ParseTokenBVSJSON` (или `ParseTokenBVSYAML`) из пакета config.
<br>
*См. пример файлов конфигурации ниже и в директории `samples/`.*
```go
import (
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
)
func main() {
// Парсинг токена из json-файла
BVSToken, _ := config.ParseTokenBVSJSON("<PATH>")
}
```
@@ -1037,9 +1076,18 @@ func main() {
"ssoUrl": "https://bvs-delta.qa.loc:8443",
"decortUrl": "https://delta.qa.loc",
"domain": "dynamix",
"token": {
"access_token": "string_token",
"token_type": "bearer",
"refresh_token": "string_refresh_token",
"expiry": "2023-11-24T12:40:27.954150524+03:00"
},
"retries": 5,
"sslSkipVerify": true,
"timeout": "5m",
"sslSkipVerify": false
"path_cfg": "config",
"path_token": "token",
"timeToRefresh": 5
}
```
@@ -1051,10 +1099,18 @@ func main() {
appSecret: <APP_SECRET>
ssoUrl: https://bvs-delta.qa.loc:8443
decortUrl: https://delta.qa.loc
domain: dynamix,
domain: dynamix
token":
access_token: string_token
token_type: bearer
refresh_token: string_refresh_token
expiry: 2023-11-24T12:40:27.954150524+03:00
retries: 5
sslSkipVerify: true
timeout: 5m
sslSkipVerify: false
path_cfg: config
path_token: token
timeToRefresh: 5
```
### Создание BVS клиента
@@ -1090,6 +1146,88 @@ func main() {
}
```
#### Пример получения BVS токена
В случае указания значения в переменной конфигурации `PathCfg` токен и конфигурация будут записаны в файл в формате `json`, переменная `PathToken` служит для записи токена в файл в формате `json`
```go
package main
import (
"fmt"
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
)
func main() {
// Настройка конфигурации
BVSCfg := config.config.BVSConfig{
Username: "<USERNAME>",
Password: "<PASSWORD>",
AppID: "<APPID>",
AppSecret: "<APPSECRET>",
SSOURL: "https://bvs-delta.qa.loc:8443"
DecortURL: "https://mr4.digitalenergy.online",
Domain: "dynamix",
PathCfg: "config",
Retries: 5,
}
// Создание клиента
BVSClient := decort.NewBVS(cfg)
// Выполнение запроса на получение токена
token, err := client.GetToken(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println(token)
}
```
#### Пример обновления BVS токена
В случае указания значения в переменной конфигурации `PathCfg` обновленный токен и конфигурация будут записаны в файл в формате `json`, переменная `PathToken` служит для записи токена в файл в формате `json`
```go
package main
import (
"fmt"
"repository.basistech.ru/BASIS/decort-golang-sdk/config"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
)
func main() {
// Настройка конфигурации
BVSCfg := config.config.BVSConfig{
Username: "<USERNAME>",
Password: "<PASSWORD>",
AppID: "<APPID>",
AppSecret: "<APPSECRET>",
SSOURL: "https://bvs-delta.qa.loc:8443"
DecortURL: "https://mr4.digitalenergy.online",
Domain: "dynamix",
PathToken: "token",
Retries: 5,
}
// Создание клиента
BVSClient := decort.NewBVS(cfg)
// Выполнение запроса на обновление токена
token, err := client.RefreshToken(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println(token)
}
```
#### Пример выполнения запроса
```go