ТокенДоступа.ПолезнаяНагрузка

Свойства · Payload

Тип: Соответствие. Содержит полезную нагрузку токена доступа.

Полное описание, параметры и ограничения

ТокенДоступа.ПолезнаяНагрузка (AccessToken.Payload)

ТокенДоступа (AccessToken)

ПолезнаяНагрузка (Payload)

Доступен, начиная с версии 8.3.21.

Использование:
Чтение и запись.
Описание:
Тип: Соответствие.
Содержит полезную нагрузку токена доступа.
Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.3.21.

Методическая информация

Практические примеры

Подготовить учебные поля JWT без выдачи прав доступа

На собственном пользователе guide-user-001 разбираем iss/sub/aud/jti и время в секундах UnixTime; объект ещё не подписан.

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

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

Подготовка

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

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

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

  4. Используются свойства установленной платформы 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");
КонецПроцедуры

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

  1. Эмитент соответствует iss, КлючСопоставленияПользователя — sub, Получатели — массив aud. Собственная строка sub не создаёт пользователя базы.

  2. Идентификатор задаёт jti; UUID помогает различать собственные черновики, но не является секретом или подписью.

  3. ВремяСоздания — число секунд UnixTime, не Дата и не миллисекунды. Обе фиксированные даты в примере явно трактуются как UTC; ТекущаяДата не выдаётся за UTC.

  4. ВремяЖизни = 300 означает пять минут. ВремяСоздания задаёт iat/nbf, время жизни участвует в exp по установленной справке.

  5. Заголовки и полезная нагрузка — Соответствие. typ и kid — метаданные, purpose — собственное учебное поле, не роль или разрешение.

  6. Подписать и проверка подписи отсутствуют. Это подготовка данных, а не действующий токен входа или авторизация API.

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

  1. Девять логических проверок дают Истина; время создания — Число, жизнь 300 секунд.

  2. В базе не появился пользователь, ни один API не вызван и никакие права не выданы.

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

Показаны все восемь свойств ТокенДоступа на понятных собственных данных.

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

  1. Фиксированная дата годится для упражнения, не выпуска текущего рабочего токена.

  2. JWT-подпись не скрывает содержимое: реальные секреты не помещают в полезную нагрузку.

  3. Нельзя принимать iss/sub/aud без проверки криптографии и политики получателя. RFC 8725: https://www.rfc-editor.org/rfc/rfc8725.html#section-3.8

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

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

В собственных заголовках и нагрузке явно задаём учебные 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С» и не аффилирован с ней.