diff --git a/.bsl-language-server.json b/.bsl-language-server.json index fe68c15..ec8dece 100644 --- a/.bsl-language-server.json +++ b/.bsl-language-server.json @@ -7,8 +7,9 @@ "diagnostics": { "LatinAndCyrillicSymbolInWord": false, "parameters": { + "PublicMethodsDescription": false, "Typo": { - "userWordsToIgnore": "Автосохранение, Автосохранения, автосохранения, Бьютифицировать, Бьютифицированный, Асинх, Сериализовать, сериализовать, СериализоватьПараметрыАвторизацииИзЗначения, Апи, КлючАпи" + "userWordsToIgnore": "Автосохранение, Автосохранения, автосохранения, Бьютифицировать, Бьютифицированный, Асинх, Сериализовать, сериализовать, СериализоватьПараметрыАвторизацииИзЗначения, Апи, КлючАпи, Автозаголовки, Автозаголовков, автозаголовки, автозаголовков" } } } diff --git a/CHANGELOG.md b/CHANGELOG.md index c904524..f5997b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,10 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see ## [Unreleased] +## [1.3.25] - 2026-08-07 + + + ### Added - Automatic request headers (issue #22): `Content-Type` by body mode @@ -39,6 +43,11 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see `Authorization: Bearer …` prefix (issue #12). Generic **Token** kept for a custom prefix (UI label: «Токен (свой префикс)»). Postman `bearer` import/export maps to `BearerToken`. +- Authorization type **JWT Bearer** (`JwtBearer`, issue #13): HS256/HS512 via + platform `ХешированиеДанных` + HMAC (RFC 2104), fields `algorithm` / `secret` / + `claims` (JSON) / `ttlSeconds` (`iat`/`exp` when TTL > 0). Auth schema and crypto + live in the data processor object module (shared by main and collection forms). + Postman `jwt` import/export maps for HS*. ## [1.3.24] - 2026-08-04 @@ -228,6 +237,10 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see ## [Unreleased] +## [1.3.25] - 2026-08-07 + + + ### Добавлено - Автоматические заголовки запроса (issue #22): `Content-Type` по типу тела @@ -244,6 +257,11 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see префикс `Authorization: Bearer …` (issue #12). Generic **Token** сохранён для своего префикса (в UI: «Токен (свой префикс)»). Импорт/экспорт Postman `bearer` соответствует `BearerToken`. +- Тип авторизации **JWT Bearer** (`JwtBearer`, issue #13): HS256/HS512 через + `ХешированиеДанных` платформы + HMAC (RFC 2104), поля `algorithm` / `secret` / + `claims` (JSON) / `ttlSeconds` (`iat`/`exp` при TTL > 0). Схема авторизации и + крипто вынесены в модуль объекта обработки (общие для основной формы и + коллекции). Импорт/экспорт Postman `jwt` для HS*. ## [1.3.24] - 2026-08-04 @@ -429,7 +447,8 @@ Versions correspond to git tags (`v_X_Y_Z` tag → `X.Y.Z` version); see - Разные исправления стабильности. -[Unreleased]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_24...HEAD +[Unreleased]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_25...HEAD +[1.3.25]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_24...v_1_3_25 [1.3.24]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_23...v_1_3_24 [1.3.23]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_22...v_1_3_23 [1.3.22]: https://github.com/LunatikDG/GetManHTTP/compare/v_1_3_21...v_1_3_22 diff --git a/README.md b/README.md index 3177969..3a99bdd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [](https://github.com/LunatikDG/GetManHTTP/blob/main/LICENSE.txt) [](#) -[](https://github.com/LunatikDG/GetManHTTP/releases) +[](https://github.com/LunatikDG/GetManHTTP/releases) [](https://github.com/LunatikDG/GetManHTTP/actions/workflows/bsl-lint.yml)
@@ -57,8 +57,8 @@ indicator, response headers and formatted body.

-**Authorization** — type selector (Basic / Token / Bearer Token / API Key) with fields that adapt to
-the chosen type.
+**Authorization** — type selector (Basic / Token / Bearer Token / API Key / JWT Bearer) with fields that adapt to
+the selected scheme. JWT Bearer signs HS256/HS512 locally (no crypto provider required).

@@ -222,8 +222,8 @@ GetManHTTP — это HTTP-клиент, оформленный как **вне

-**Авторизация** — выбор типа (Basic / Token / Bearer Token / API Key) с полями, которые меняются в
-зависимости от выбранного типа.
+**Авторизация** — выбор типа (Basic / Token / Bearer Token / API Key / JWT Bearer) с полями, которые меняются в
+зависимости от схемы. JWT Bearer подписывает HS256/HS512 локально (криптопровайдер не нужен).

diff --git a/docs/collection-format.md b/docs/collection-format.md
index 79961b1..03cfecf 100644
--- a/docs/collection-format.md
+++ b/docs/collection-format.md
@@ -105,6 +105,7 @@ Portable authorization object (collection, folder, or request).
| `Token` | collection, folder, request | `tokenPrefix`, `token` | Sent as `Authorization: {tokenPrefix} {token}`. Default prefix when empty at apply time: `Token`. `token` is secret. |
| `BearerToken` | collection, folder, request | `token` | Sent as `Authorization: Bearer {token}` (fixed prefix, RFC 6750). `token` is secret. |
| `ApiKey` | collection, folder, request | `key`, `value`, `addTo` | `addTo`: `Header` (default) or `Query`. Default `key` name: `X-API-Key`. `value` is secret. |
+| `JwtBearer` | collection, folder, request | `algorithm`, `secret`, `claims`, `ttlSeconds` | Builds JWT (HS256/HS512) and sends `Authorization: Bearer {jwt}`. `algorithm` default `HS256`; `claims` is a JSON object string; `ttlSeconds` > 0 sets `iat`/`exp` (Unix). `secret` is secret. |
| `InheritFromOwner` | folder, request | _(none)_ | Walk up folder → collection auth. **Not** valid as collection root auth (importers coerce unsupported types to the context default). |
---
@@ -377,6 +378,7 @@ v2.1: файлы Postman определяются отдельно и преоб
| `Token` | коллекция, папка, запрос | `tokenPrefix`, `token` | Заголовок `Authorization: {tokenPrefix} {token}`. Префикс по умолчанию при применении: `Token`. `token` — секрет. |
| `BearerToken` | коллекция, папка, запрос | `token` | Заголовок `Authorization: Bearer {token}` (фиксированный префикс, RFC 6750). `token` — секрет. |
| `ApiKey` | коллекция, папка, запрос | `key`, `value`, `addTo` | `addTo`: `Header` (по умолчанию) или `Query`. Имя ключа по умолчанию: `X-API-Key`. `value` — секрет. |
+| `JwtBearer` | коллекция, папка, запрос | `algorithm`, `secret`, `claims`, `ttlSeconds` | Собирает JWT (HS256/HS512) и шлёт `Authorization: Bearer {jwt}`. `algorithm` по умолчанию `HS256`; `claims` — JSON-объект строкой; `ttlSeconds` > 0 задаёт `iat`/`exp` (Unix). `secret` — секрет. |
| `InheritFromOwner` | папка, запрос | _(нет)_ | Наследование папка → коллекция. На корне коллекции не используется. |
---
diff --git a/docs/images/auth-fields.png b/docs/images/auth-fields.png
index f45efa7..874da65 100644
Binary files a/docs/images/auth-fields.png and b/docs/images/auth-fields.png differ
diff --git a/docs/images/main-form.png b/docs/images/main-form.png
index a8c146d..23a22b2 100644
Binary files a/docs/images/main-form.png and b/docs/images/main-form.png differ
diff --git "a/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form" "b/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
index 7e53b53..37b36ce 100644
--- "a/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
+++ "b/src/ExternalDataProcessors/GetManHTTP/Forms/\320\244\320\276\321\200\320\274\320\260/Form.form"
@@ -2,7 +2,7 @@
Ошибки и предложения: репозиторий на GitHub, почта Версия обработки: 1.3.24 Версия обработки: 1.3.25Настройка HTTP-запроса
Authorization (префикс по умолчанию Token);Authorization: Bearer … (фиксированный префикс);iat/exp; заголовок Authorization: Bearer ….Обратная связь
main@lunatikdg.ru, Telegram @LunatikDG.