Тип: Соответствие. Содержит полезную нагрузку токена доступа.
Полное описание, параметры и ограничения
ТокенДоступа.ПолезнаяНагрузка (AccessToken.Payload)
ТокенДоступа (AccessToken)
ПолезнаяНагрузка (Payload)
Доступен, начиная с версии 8.3.21.
Использование:
Чтение и запись.
Описание:
Тип: Соответствие.
Содержит полезную нагрузку токена доступа.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.21.
Методическая информация
Практические примеры
Подготовить учебные поля JWT без выдачи прав доступа
На собственном пользователе 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
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Создать проект токена из двух соответствий
В собственных заголовках и нагрузке явно задаём учебные claims; этот конструктор не читает и не проверяет чужой JWT.
Где и как запускать
Полный серверный общий модуль УчебныеТокены. Вызовите экспортную процедуру ВыполнитьПример; не помещайте весь модуль внутрь другой процедуры.
Подготовка
Собственная учебная база, серверный общий модуль УчебныеТокены с флагом Сервер. Код полного модуля вставляйте на уровне модуля; вызовите ВыполнитьПример() из своей учебной обработки.
Все пользователи, эмитент, получатель и данные вымышленные. Никаких настоящих access_token, закрытых ключей, паролей или рабочих API.
Эти уроки создают проекты данных/политик в памяти, не подписывают токены, не аутентифицируют пользователя и не выдают права.
Используются свойства установленной платформы 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);
КонецПроцедурыРазбор по шагам
В отличие от конструктора без аргументов передаём два собственных Соответствие: заголовки и полезную нагрузку.
alg = RS256 здесь только строка в заголовках. Она не доказывает наличие RSA-подписи, проверенного ключа или работоспособного рабочего API.
iat/nbf/exp — собственные числовые значения в секундах. В данном проекте exp на 300 больше iat; срок действия ещё не проверяется относительно настоящего времени.
aud содержит массив строк, не строку со списком через запятую. purpose — отдельное учебное расширение полезной нагрузки.
Читаем созданный объект и его собственные значения. Не декодируем внешний токен, не изменяем пользовательские права.
Как проверить результат
Пять сравнений дают Истина; интервал собственных iat/exp равен 300 секундам.
Наличие alg не сопровождалось подписыванием. Нет сетевой авторизации и утверждения о действительности JWT.
Ожидаемый результат
Показан второй настоящий конструктор и точное различие проекта данных и проверенного токена.
На что обратить внимание
Нельзя доверять alg из полученного внешнего заголовка как инструкции выбрать любой ключ/алгоритм.
Конструктор не заменяет проверку подписи, эмитента, аудитории и времени. RFC 8725: https://www.rfc-editor.org/rfc/rfc8725.html#section-3.1
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.