Команда authorize — описание и примеры#
Команда authorize реализует авторизацию пользователя через протокол OpenID Connect (OIDC) с поддержкой PKCE. Может вызываться как самостоятельная команда или автоматически при наличии authType=oidc в других командах.
Содержание:
- Общая информация
- Формат ссылки
- Получение параметров авторизации
- Процесс авторизации
- Callback (обратный вызов)
- Справочник интерфейсов
- Интерфейс приложения
Общая информация#
Команда authorize выполняет аутентификацию пользователя через OIDC-провайдер:
- Запрашивает параметры авторизации с сервера (или получает их из локального JSON).
- Строит URL авторизации с PKCE (Proof Key for Code Exchange).
- Открывает браузер пользователя для входа на стороне провайдера.
- Получает код авторизации через
callbackи обменивает его на токены доступа. - Сохраняет токены в доверенном сервисе и использует для последующих запросов.
Поддерживается также безвзаимодейственная (silent) авторизация с использованием клиентского сертификата (mTLS), если prompt=none.
Все запросы между КриптоАРМ и сервером ДОЛЖНЫ соответствовать спецификации протокола JSON-RPC 2.0.
Формат ссылки#
cryptoarm://- зарегистрированный протоколauthorize- выполняемая команда<URL>- ссылка на получение JSON с параметрами авторизацииid- уникальный идентификатор транзакции
Пример:
Получение параметров авторизации#
После получения команды authorize КриптоАРМ запрашивает параметры авторизации с сервера.
Формат запроса#
| Ключ | Значение | Описание |
|---|---|---|
| jsonrpc | «2.0» | Версия JSON-RPC протокола. Всегда «2.0». |
| method | authorization.parameters | Используемый метод. Всегда authorization.parameters. |
| id | Уникальный идентификатор | Используется идентификатор, который указан в ссылке на операцию. |
Пример:
Формат ответа#
| Ключ | Значение | Описание |
|---|---|---|
| jsonrpc | «2.0» | Версия JSON-RPC протокола. Всегда «2.0». |
| params | { authorizationParams: IAuthorizationParams } | Параметры авторизации |
| id | Уникальный идентификатор | Используется идентификатор, который указан в ссылке на операцию. |
Пример:
Процесс авторизации#
После получения параметров авторизации:
- КриптоАРМ отображает диалог авторизации с информацией о сервисе.
-
Если пользователь подтверждает (
prompt != "none"):- Генерируется code_verifier и code_challenge (PKCE).
- Строится URL авторизации провайдера.
- Открывается браузер пользователя.
- Пользователь проходит аутентификацию на стороне провайдера.
- После успешного входа провайдер перенаправляет на
redirectUriс параметрамиcodeиstate. - Этот редирект должен быть перехвачен и передан КриптоАРМ через команду
callback.
-
Если
prompt="none"(безвзаимодейственная авторизация):- Используется клиентский сертификат (mTLS) для получения кода авторизации напрямую.
- Код обменивается на токены через token endpoint.
После успешной авторизации:
- Токены (
access_token,id_token,refresh_token) сохраняются в доверенном сервисе. - Профиль пользователя извлекается из
id_tokenили черезuserinfo endpoint. - Отображается диалог успешной авторизации с именем пользователя.
Callback (обратный вызов)#
Команда callback используется для обработки редиректа от OIDC-провайдера после успешной аутентификации. Обычно вызывается автоматически операционной системой при переходе по зарегистрированному протоколу cryptoarm://.
Формат ссылки#
Параметры state, code, session_state и другие передаются в query-строке редиректа от провайдера и извлекаются КриптоАРМ автоматически.
КриптоАРМ обменивает полученный код авторизации на токены, извлекает профиль пользователя и сохраняет всё в доверенном сервисе.
Важно: Команда
callbackявляется внутренней и не предназначена для прямого вызова. Она автоматически обрабатывается КриптоАРМ при получении редиректа от OIDC-провайдера.
Справочник интерфейсов#
Интерфейс IAuthorizationParams#
Параметры, необходимые для OIDC-авторизации.
| Свойство | Тип | Описание |
|---|---|---|
| clientId | string | Идентификатор клиента, зарегистрированный у OIDC-провайдера |
| issuer | string | URL издателя токенов (Issuer) |
| redirectUri | string | URI для редиректа после авторизации |
| scope | string | Запрашиваемые области (scopes), например "openid profile" |
| wellKnownUrl? | string | URL well-known конфигурации OIDC (если отличается от стандартного .well-known/openid-configuration) |
| resource? | string/string[] | Идентификатор ресурса, к которому запрашивается доступ |
| responseTypes? | string/string[] | Типы ответа (response_type). По умолчанию "code". |
| prompt? | string | Параметр prompt. "login" — интерактивная авторизация, "none" — безвзаимодейственная (silent). |
| override? | { issuer: { authorization_endpoint, token_endpoint, ... } } | Переопределение метаданных издателя (если well-known недоступен). |
Интерфейс ICustomAuth (настройки передачи токена)#
После успешной OIDC-авторизации токен доступа может передаваться в последующих запросах. Настройки customAuth определяют способ передачи:
| Свойство | Тип | Описание |
|---|---|---|
| token? | string | Токен доступа (заполняется автоматически) |
| in? | string | Способ передачи: "header" (заголовок), "query" (параметр), "body" (тело). По умолчанию: "header". |
| key? | string | Имя ключа/заголовка. По умолчанию: "Authorization" для header, "token" для query/body. |
| scheme? | string | Схема авторизации. По умолчанию: "Bearer". |
| thumbprint? | string | Отпечаток клиентского сертификата для mTLS. |
Интерфейс приложения#
Процесс авторизации состоит из нескольких этапов:
- Диалог подтверждения — отображается информация о запрашиваемом сервисе. Кнопки: «Продолжить» и «Отмена».
- Авторизация в браузере — открывается системный браузер со страницей входа провайдера.
- Ожидание редиректа — КриптоАРМ ожидает
callbackс кодом авторизации. - Успешная авторизация — отображается имя авторизованного пользователя. Кнопка «Готово».
При отмене на любом этапе процесс прерывается.