Создать проект токена из двух соответствий

Учебные задачи

В собственных заголовках и нагрузке явно задаём учебные claims; этот конструктор не читает и не проверяет чужой JWT.

Где и как запускать

Полный серверный общий модуль УчебныеТокены. Вызовите экспортную процедуру ВыполнитьПример; не помещайте весь модуль внутрь другой процедуры.

Подготовка

  1. Собственная учебная база, серверный общий модуль УчебныеТокены с флагом Сервер. Код полного модуля вставляйте на уровне модуля; вызовите ВыполнитьПример() из своей учебной обработки.

  2. Все пользователи, эмитент, получатель и данные вымышленные. Никаких настоящих access_token, закрытых ключей, паролей или рабочих API.

  3. Эти уроки создают проекты данных/политик в памяти, не подписывают токены, не аутентифицируют пользователя и не выдают права.

  4. Используются свойства установленной платформы 8.5.1.1343. Сверка с документацией и тесты структуры не являются выполнением в настоящей 1С.

Процедура ВыполнитьПример() Экспорт
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("typ", "JWT");
    Заголовки.Вставить("alg", "RS256");
    Нагрузка = Новый Соответствие;
    Нагрузка.Вставить("iss", "guide-owned-issuer");
    Нагрузка.Вставить("sub", "guide-user-001");
    Нагрузка.Вставить("jti", "guide-owned-constructor-example");
    НачалоUTC = Дата(2026, 10, 5, 10) - Дата(1970, 1, 1);
    Нагрузка.Вставить("iat", НачалоUTC);
    Нагрузка.Вставить("nbf", НачалоUTC);
    Нагрузка.Вставить("exp", НачалоUTC + 300);
    Получатели = Новый Массив;
    Получатели.Добавить("guide-owned-reader");
    Нагрузка.Вставить("aud", Получатели);
    Нагрузка.Вставить("purpose", "own-book-lesson");
    Токен = Новый ТокенДоступа(Заголовки, Нагрузка);
    Сообщить(Токен.Заголовки.Получить("alg") = "RS256");
    Сообщить(Токен.ПолезнаяНагрузка.Получить("iss") = "guide-owned-issuer");
    Сообщить(Токен.ПолезнаяНагрузка.Получить("sub") = "guide-user-001");
    Сообщить(Токен.ПолезнаяНагрузка.Получить("aud").Количество() = 1);
    Сообщить(Токен.ПолезнаяНагрузка.Получить("exp") - Токен.ПолезнаяНагрузка.Получить("iat") = 300);
КонецПроцедуры

Разбор по шагам

  1. В отличие от конструктора без аргументов передаём два собственных Соответствие: заголовки и полезную нагрузку.

  2. alg = RS256 здесь только строка в заголовках. Она не доказывает наличие RSA-подписи, проверенного ключа или работоспособного рабочего API.

  3. iat/nbf/exp — собственные числовые значения в секундах. В данном проекте exp на 300 больше iat; срок действия ещё не проверяется относительно настоящего времени.

  4. aud содержит массив строк, не строку со списком через запятую. purpose — отдельное учебное расширение полезной нагрузки.

  5. Читаем созданный объект и его собственные значения. Не декодируем внешний токен, не изменяем пользовательские права.

Как проверить результат

  1. Пять сравнений дают Истина; интервал собственных iat/exp равен 300 секундам.

  2. Наличие alg не сопровождалось подписыванием. Нет сетевой авторизации и утверждения о действительности JWT.

Ожидаемый результат

Показан второй настоящий конструктор и точное различие проекта данных и проверенного токена.

На что обратить внимание

  1. Нельзя доверять alg из полученного внешнего заголовка как инструкции выбрать любой ключ/алгоритм.

  2. Конструктор не заменяет проверку подписи, эмитента, аудитории и времени. RFC 8725: https://www.rfc-editor.org/rfc/rfc8725.html#section-3.1

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.