На собственном пользователе guide-user-001 разбираем iss/sub/aud/jti и время в секундах UnixTime; объект ещё не подписан.
Где и как запускать
Полный серверный общий модуль УчебныеТокены. Вызовите экспортную процедуру ВыполнитьПример; не помещайте весь модуль внутрь другой процедуры.
Подготовка
Собственная учебная база, серверный общий модуль УчебныеТокены с флагом Сервер. Код полного модуля вставляйте на уровне модуля; вызовите ВыполнитьПример() из своей учебной обработки.
Все пользователи, эмитент, получатель и данные вымышленные. Никаких настоящих access_token, закрытых ключей, паролей или рабочих API.
Эти уроки создают проекты данных/политик в памяти, не подписывают токены, не аутентифицируют пользователя и не выдают права.
Используются свойства установленной платформы 8.5.1.1343. Сверка с документацией и тесты структуры не являются выполнением в настоящей 1С.
Процедура ВыполнитьПример() Экспорт
Токен = Новый ТокенДоступа;
Токен.Эмитент = "guide-owned-issuer";
Токен.КлючСопоставленияПользователя = "guide-user-001";
Токен.Идентификатор = "guide-owned-token-" + Строка(Новый УникальныйИдентификатор);
Токен.Получатели = Новый Массив;
Токен.Получатели.Добавить("guide-owned-reader");
УчебноеВремяUTC = Дата(2026, 10, 5, 10, 0, 0);
УчебноеНачалоЭпохиUTC = Дата(1970, 1, 1, 0, 0, 0);
Токен.ВремяСоздания = УчебноеВремяUTC - УчебноеНачалоЭпохиUTC;
Токен.ВремяЖизни = 300;
Токен.Заголовки.Вставить("typ", "JWT");
Токен.Заголовки.Вставить("kid", "guide-owned-key-reference");
Токен.ПолезнаяНагрузка.Вставить("purpose", "own-book-lesson");
Сообщить(Токен.Эмитент = "guide-owned-issuer");
Сообщить(Токен.КлючСопоставленияПользователя = "guide-user-001");
Сообщить(Лев(Токен.Идентификатор, 18) = "guide-owned-token-");
Сообщить(Токен.Получатели.Количество() = 1);
Сообщить(Токен.Получатели.Получить(0) = "guide-owned-reader");
Сообщить(ТипЗнч(Токен.ВремяСоздания) = Тип("Число"));
Сообщить(Токен.ВремяЖизни = 300);
Сообщить(Токен.Заголовки.Получить("typ") = "JWT");
Сообщить(Токен.ПолезнаяНагрузка.Получить("purpose") = "own-book-lesson");
КонецПроцедурыРазбор по шагам
Эмитент соответствует iss, КлючСопоставленияПользователя — sub, Получатели — массив aud. Собственная строка sub не создаёт пользователя базы.
Идентификатор задаёт jti; UUID помогает различать собственные черновики, но не является секретом или подписью.
ВремяСоздания — число секунд UnixTime, не Дата и не миллисекунды. Обе фиксированные даты в примере явно трактуются как UTC; ТекущаяДата не выдаётся за UTC.
ВремяЖизни = 300 означает пять минут. ВремяСоздания задаёт iat/nbf, время жизни участвует в exp по установленной справке.
Заголовки и полезная нагрузка — Соответствие. typ и kid — метаданные, purpose — собственное учебное поле, не роль или разрешение.
Подписать и проверка подписи отсутствуют. Это подготовка данных, а не действующий токен входа или авторизация API.
Как проверить результат
Девять логических проверок дают Истина; время создания — Число, жизнь 300 секунд.
В базе не появился пользователь, ни один API не вызван и никакие права не выданы.
Ожидаемый результат
Показаны все восемь свойств ТокенДоступа на понятных собственных данных.
На что обратить внимание
Фиксированная дата годится для упражнения, не выпуска текущего рабочего токена.
JWT-подпись не скрывает содержимое: реальные секреты не помещают в полезную нагрузку.
Нельзя принимать iss/sub/aud без проверки криптографии и политики получателя. RFC 8725: https://www.rfc-editor.org/rfc/rfc8725.html#section-3.8
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.