Пример кода Javascript для получения идентификатора клиента, проверки и последующего возвращения в заголовке ответа
Руководство пользователя Adobe Acrobat Sign
Новые возможности
Начало работы
- Краткое руководство для администраторов
- Краткое руководство для пользователей
- Для разработчиков
- Библиотека видеоуроков
- Часто задаваемые вопросы
Администрирование
- Обзор Admin Console
- Управление пользователями
- Добавление пользователей
- Создание пользователей, ориентированных на функции
- Проверка пользователей с ошибками подготовки
- Изменение имени и адреса электронной почты
- Изменение участия в группе
- Изменение участия в группе с помощью интерфейса группы
- Повышение роли пользователя до роли администратора
- Типы идентификаторов пользователей и единый вход
- Смена удостоверения пользователя
- Аутентификация пользователей с помощью Microsoft Azure
- Аутентификация пользователей с помощью Google Federation
- Профили продуктов
- Интерфейс входа
- Параметры учетной записи/группы
- Обзор параметров
- Глобальные настройки
- Идентификатор и уровень учетной записи
- Новый интерфейс для получателей
- Рабочие процессы самостоятельного подписания
- Пакетная отправка
- Веб-формы
- Настраиваемые рабочие процессы отправки
- Рабочие процессы Power Automate
- Документы библиотеки
- Сбор данных формы с соглашениями
- Ограниченная видимость документа
- Прикрепление копии подписанного соглашения в формате PDF
- Добавление ссылки в сообщение электронной почты
- Добавление изображения в сообщение электронной почты
- Файлы, прикрепленные к электронному письму, получат имя
- Прикрепление отчета об аудите к документам
- Объединение нескольких документов в один
- Загрузка отдельных документов
- Добавление подписанного документа
- Делегирование для пользователей в моей учетной записи
- Предоставление права делегирования внешним получателям
- Право на подпись
- Право на отправку
- Полномочия на добавление электронных печатей
- Установка часового пояса по умолчанию
- Установка формата даты по умолчанию
- Пользователи, состоящие в нескольких группах (UMG)
- Разрешения администратора группы
- Замена получателя
- Отчет об аудите
- Нижний колонтитул транзакции
- Сообщения и инструкции в приложении
- Файлы PDF с расширенным доступом
- Новый интерфейс авторинга
- Клиент в области здравоохранения
- Настройка учетной записи
- Добавление логотипа
- Настройка названия и URL-адрес компании
- Добавление названия компании
- URL-адрес перенаправления после завершения работы с соглашением
- Настройки подписи
- Корректно отформатированные подписи
- Предоставление получателям разрешения на добавление подписи
- Подписывающие стороны могут изменять свои имена
- Предоставление получателям разрешения на использование своих сохраненных подписей
- Пользовательские условия использования и соглашение о неразглашении
- Перемещение между получателями по полям форм
- Перезапуск процесса работы с документом
- Отклонение подписания
- Предоставление разрешения на использование штампов
- Добавление требования о том, чтобы подписывающие стороны указывали должность или название компании
- Предоставление подписывающим сторонам разрешения на печать и размещение рукописной подписи
- Отображение сообщений при электронном подписании
- Добавление требования о том, чтобы подписанты использовали мобильное устройство для создания подписи
- Запрос IP-адресов подписантов
- Исключение названия компании и должности из штампа участника
- Цифровые подписи
- Электронные печати
- Цифровое удостоверение
- Параметры отчета
- Новый интерфейс для работы с отчетами
- Настройки классических отчетов
- Параметры безопасности
- Параметры единого входа
- Настройки «Запомнить меня»
- Политика пароля для входа
- Надежность пароля для входа
- Продолжительность веб-сеанса
- Тип шифрования PDF
- Программный интерфейс
- Доступ к сведениям о пользователе и группе
- Допустимые диапазоны IP-адресов
- Общий доступ к учетной записи
- Полномочия на совместное использование учетных записей
- Средства управления совместным использованием соглашений
- Проверка личности подписывающей стороны
- Пароль для подписания соглашения
- Надежность пароля для документа
- Блокировка подписывающих сторон по геолокации
- Аутентификация по телефону
- Аутентификация на основе данных (KBA)
- Разрешение на извлечение страниц
- Истечение срока действия ссылки на документ
- Отправка сертификата клиента для веб-перехватчиков и обратных вызовов
- Метка времени
- Параметры отправки
- Отображение страницы отправки после входа
- Добавление требования о вводе имени получателя при отправке
- Блокировка значений имени для известных пользователей
- Допустимые роли получателей
- Разрешение электронного заверения
- Группы получателей
- Получатели в копии
- Доступ получателя к соглашению
- Обязательные поля
- Прикрепление документов
- Сведение полей
- Изменение соглашений
- Название соглашения
- Языки
- Личные сообщения
- Разрешенные типы подписей
- Напоминания
- Защита паролем для подписанных документов
- Отправлять уведомления о соглашении через
- Параметры идентификации подписывающей стороны
- Защита контента
- Включение операций Notarize
- Истечение срока действия документа
- Просмотр, размещение подписей и добавление полей
- Порядок подписания
- Режим Liquid Mode
- Элементы управления для настраиваемого рабочего процесса
- Возможности для отправки на странице эл. подписания
- URL перенаправления при подтверждении после подписания
- Шаблоны сообщений
- Требования биофармацевтической отрасли
- Интеграция с рабочим процессом
- Настройки нотариального заверения
- Интеграция платежной системы
- Сообщения для подписывающих сторон
- Параметры SAML
- Конфигурация SAML
- Установка Microsoft Active Directory Federation Service
- Установка Okta
- Установка OneLogin
- Установка Oracle Identity Federation
- Конфигурация SAML
- Управление данными
- Настройки меток времени
- Внешний архив
- Языки учетной записи
- Параметры эл. почты
- Переход с домена с echosign.com на adobesign.com
- Настройка параметров для получателей
- Руководство по нормативным требованиям
- Специальные возможности
- Закон об ответственности и переносе данных о страховании здоровья граждан (HIPAA)
- Общий регламент по защите данных (GDPR)
- 21 CFR, часть 11 и приложение EudraLex 11
- Клиенты в области здравоохранения
- Поддержка IVES
- Хранящиеся соглашения
- Рекомендации для ЕС и Великобритании
- Массовая загрузка документов
- Подтверждение домена
- Ссылки на сообщения о нарушениях
Отправка, подписание соглашений и управление ими
- Параметры получателя
- Отменить уведомления по электронной почте
- Параметры на странице эл. подписания
- Параметры на странице эл. подписания
- Открытие для чтения соглашения без полей
- Отказ от подписания соглашения
- Передача полномочий по подписанию
- Перезапуск соглашения
- Загрузка PDF-файл соглашения
- Просмотр истории соглашения
- Просмотр сообщений о соглашении
- Преобразование электронной подписи в рукописную
- Преобразование рукописной подписи в электронную
- Навигация по полям формы
- Очистка полей формы
- Увеличение страниц электронного документа и навигация по ним
- Изменение языка, используемого в инструментах соглашения и сведениях о нем
- Просмотр юридической информации
- Настройка параметров файлов cookie Acrobat Sign
- Отправка соглашений
- Создание полей в документах
- Среда авторинга внутри приложения
- Создание форм и текстовых тегов
- Создание форм с помощью Acrobat (AcroForms)
- Поля
- Часто задаваемые вопросы об авторинге
- Подписание соглашений
- Управление соглашениями
- Управление видом страницы
- Передача соглашений
- Замена получателей
- Ограниченная видимость документа
- Отмена соглашения
- Создание новых напоминаний
- Просмотр напоминаний
- Отмена напоминания
- Доступ к потокам Power Automate
- Другие действия...
- Как работает поиск
- Просмотр соглашения
- Создание шаблона на основе соглашения
- Скрытие/отображение соглашений в представлении
- Добавление подписанного соглашения
- Изменение файлов или полей в отправленном соглашении
- Изменение метода аутентификации получателя
- Добавление или изменение срока действия
- Добавление примечания к соглашению
- Предоставление доступа к отдельному соглашению
- Отмена доступа к соглашению
- Загрузка отдельного соглашения
- Загрузка отдельных файлов соглашения
- Загрузка отчета об аудите для соглашения
- Загрузка содержимого полей для соглашения
- Отчет об аудите
- Отчеты и экспорт данных
- Обзор
- Предоставление пользователям доступа к отчетам
- Диаграммы отчетов
- Экспорт данных
- Переименование отчета или экспорта
- Дублирование отчета или экспорта
- Назначение отчета или экспорта
- Удаление отчета или экспорта
- Проверка использования транзакций
Расширенные возможности и рабочие процессы для работы с соглашениями
- Веб-формы
- Шаблоны для повторного использования (Шаблоны библиотеки)
- Формы государственных учреждений США в библиотеке Acrobat Sign
- Создание шаблона библиотеки
- Изменение имени шаблона библиотеки
- Изменение типа шаблона библиотеки
- Изменение уровня доступа к шаблону библиотеки
- Копирование, редактирование и сохранение общего шаблона
- Загрузка данных для агрегированного поля в шаблоне библиотеки
- Передача прав владения веб-формами и шаблонами библиотек
- Рабочие процессы Power Automate
- Обзор интеграции с Power Automate и включенных в нее прав
- Включение интеграции Power Automate
- Контекстные действия на странице «Управление»
- Отслеживание использования Power Automate
- Создание потока (с примерами)
- Триггеры, используемые для потоков
- Импорт потоков извне Acrobat Sign
- Управление потоками
- Редактирование потоков
- Общий доступ к потокам
- Отключение и включение потоков
- Удаление потоков
- Полезные шаблоны
- Только администратор
- Архивирование соглашений
- Сохранение заполненных документов в SharePoint
- Сохранение заполненных документов в OneDrive для бизнеса
- Сохранение заполненных документов на Google Диске
- Сохранение всех заполненных документов в Dropbox
- Сохранение заполненных документов в Box
- Архивирование соглашений веб-форм
- Сохранение заполненных документов веб-форм в библиотеке SharePoint
- Сохранение всех заполненных документов в OneDrive для бизнеса
- Сохранение заполненных документов на Google Диске
- Сохранение заполненных документов веб-форм в Box
- Извлечение данных соглашения
- Уведомления о соглашениях
- Отправка по электронной почте настраиваемых уведомлений с содержимым соглашения и подписанным соглашением
- Получение уведомлений Adobe Acrobat Sign в канале Teams
- Получение уведомлений Adobe Acrobat Sign в Slack
- Получение уведомлений Adobe Acrobat Sign в Webex
- Создание соглашения
- Создание документа на основе формы Power Apps и шаблона Word, отправка на подпись
- Создание соглашения на основе шаблона Word в OneDrive и получение подписи
- Создание соглашения по выбранной строке Excel, отправка на проверку и подпись
- Настраиваемые рабочие процессы отправки
- Предоставление доступа к пользователям и соглашениям
Интеграция с другими продуктами
- Обзор интеграции с Acrobat Sign
- Acrobat Sign для Salesforce
- Acrobat Sign для Microsoft
- Другие интеграции
- Интеграции, управляемые партнерами
- Как получить ключ интеграции?
Разработчик Acrobat Sign
- Интерфейсы REST API
- Веб-перехватчики
Поддержка и устранение неполадок
Обзор
Веб-перехватчик — это определяемый пользователем запрос HTTPS, который запускается при возникновении события с подпиской на исходном сайте (в данном случае — Adobe Acrobat Sign).
Итак, веб-перехватчик — это служба REST, принимающая пакет или поток данных.
Веб-перехватчики предназначены для взаимодействия между службами в модели PUSH.
При запуске события с подпиской Acrobat Sign создает запрос HTTPS POST с JSON-текстом и доставляет его по указанному URL-адресу.
Перед настройкой веб-перехватчиков убедитесь, что сеть принимает необходимые для работы диапазоны IP-адресов.
По сравнению с использовавшимися ранее методами обратного вызова веб-перехватчики обладают рядом преимуществ, включая следующие:
- Администраторы могут включать собственные веб-перехватчики, не привлекая службу поддержки Acrobat Sign для создания списка URL-адресов обратных вызовов.
- Веб-перехватчики лучше обеспечивают актуальность данных, эффективность коммуникации и безопасность. Не требуется регулярный опрос данных.
- Веб-перехватчики позволяют с легкостью использовать разные уровни области применения (учетная запись/группа/пользователь/ресурс).
- Веб-перехватчики — это более современное решение для API, которое упрощает настройку современных приложений.
- Для каждой области (учетная запись/группа/пользователь/ресурс) можно настроить несколько веб-перехватчиков, тогда как обратные вызовы должны быть уникальными.
- Веб-перехватчики позволяют выбирать данные для возврата, в то время как обратный вызов работает по принципу «все или ничего».
- Можно настроить, какие метаданные (только основные или подробные) может передавать веб-перехватчик.
- Поскольку пользовательский интерфейс полностью контролируется администратором, веб-перехватчики намного проще создавать, редактировать или отключать по мере необходимости.
Этот документ в основном посвящен пользовательскому интерфейсу веб-перехватчиков в веб-приложении Acrobat Sign (ранее Adobe Sign).
Разработчики, которым нужны подробности относительно API, могут найти информацию во следующей ссылке:
Необходимые требования
Для работы службы необходимо разрешить диапазоны IP-адресов для веб-перехватчиков с помощью сетевой безопасности.
Устаревшая служба URL-адресов обратного вызова в REST версии 5 использует те же диапазоны IP-адресов, что и служба веб-перехватчика.
Администраторы могут входить в Adobe Admin Console для добавления пользователей. После входа в систему перейдите к меню администратора и прокрутите вниз до пункта Веб-перехватчики.
Способ применения
Прежде всего администраторам потребуется служба веб-перехватчиков, готовая принимать входящие push-уведомления от Acrobat Sign. Здесь есть множество вариантов, и веб-перехватчик будет успешно работать с любой службой, которая умеет принимать запросы POST и GET.
После запуска службы администратор Acrobat Sign может создать новый веб-перехватчик в интерфейсе веб-перехватчика в меню «Учетная запись» на сайте Acrobat Sign.
Администраторы могут настроить запуск веб-перехватчика для событий документа, веб-формы (виджет) или массовой отправки (MegaSign). Шаблон библиотеки (документ библиотеки) также можно настроить через API.
Область действия веб-перехватчика может включать всю учетную запись или отдельные группы, что настраивается через интерфейс администратора. API обеспечивает большую гибкость за счет возможности выбора между диапазонами USER или RESOURCE.
Можно настраивать тип данных, передаваемых по URL-адресу, и включать такие сведения, как сведения о соглашении, информацию об участнике, сведения о документе и т. д.
После настройки и сохранения веб-перехватчика Acrobat Sign будет отправлять новый JSON-объект по указанному URL-адресу при каждом срабатывании события с подпиской. Если вы не хотите менять критерии переключающего события или полезную нагрузку JSON, никаких манипуляций с веб-перехватчиком выполнять не нужно.
Проверка намерения для URL-адреса веб-перехватчика
Перед завершением регистрации веб-перехватчика Acrobat Sign проверяет, действительно ли указанный в запросе на регистрацию URL-адрес веб-перехватчика предназначен для получения уведомлений. Поэтому когда Acrobat Sign получает запрос на регистрацию нового веб-перехватчика, он сначала отправляет запрос проверки по URL-адресу веб-перехватчика. Он представляет собой запрос HTTPS GET, отправляемый на URL-адрес веб-перехватчика. Этот запрос имеет собственный HTTP-заголовок X-AdobeSign-ClientId. Значение в этом заголовке установлено для идентификатора клиента API-приложения (идентификатора приложения), которое запрашивает создание/регистрацию веб-перехватчика. Для успешной регистрации веб-перехватчика его URL-адрес должен ответить на этот запрос проверки, используя код ответа 2XX, А ТАКЖЕ должен отправить одно и то же значение идентификатора клиента одним из следующих двух способов:
- В заголовке ответа X-AdobeSign-ClientId. Это тот же заголовок, который передан в запросе и должен быть возвращен при ответе.
- Либо в тексте ответа JSON с ключом xAdobeSignClientId, значением которого является тот же идентификатор клиента, который отправлен в запросе.
Веб-перехватчик будет зарегистрирован только при успешном ответе (код ответа 2XX) и после проверки идентификатора клиента либо в заголовке, либо в тексте ответа. Цель этого запроса проверки — убедиться в том, что URL-адрес веб-перехватчика действительно готов получать уведомления на указанный URL-адрес. Если вы случайно введете неверный URL-адрес, он не будет правильно отвечать на запрос проверки намерения, и Acrobat Sign не станет отправлять уведомления на этот URL-адрес. URL-адрес веб-перехватчика также может подтвердить, что уведомления будут получаться только через веб-перехватчики, зарегистрированные конкретным приложением. Это выполняется путем проверки идентификатора клиента приложения, переданного в заголовке X-AdobeSign-ClientId. Если URL-адрес веб-перехватчика не распознает идентификатор клиента, он НЕ БУДЕТ отсылать ответный код об успешном выполнении операции, а Acrobat Sign позаботится о том, чтобы этот URL-адрес не был зарегистрирован в качестве веб-перехватчика.
Проверка вызова URL-адреса веб-перехватчика будет выполняться при следующих сценариях:
- Регистрация веб-перехватчика. Веб-перехватчик не будет создан, если проверка URL-адреса веб-перехватчика не завершена.
- Обновление веб-перехватчика с НЕАКТИВНОГО на АКТИВНЫЙ. Если проверка URL-адреса веб-перехватчика не завершится, состояние веб-перехватчика не будет изменено на АКТИВНОЕ.
Как ответить на уведомление веб-перехватчика
Acrobat Sign выполняет неявную проверку намерений в каждом запросе уведомления веб-перехватчика, отправляемом на его URL-адрес. Таким образом, каждый HTTPS-запрос уведомления веб-перехватчика также содержит настраиваемый HTTP-заголовок X-AdobeSign-ClientId. Значением в этом заголовке является идентификатор клиента (идентификатор приложения) того приложения, которое создало веб-перехватчик. Уведомление веб-перехватчика будет считаться доставленным, только если будет возвращен успешный ответ (код ответа 2XX), а идентификатор клиента будет отправлен либо в заголовке HTTP (X-AdobeSign-ClientId), либо в тексте ответа JSON с ключом xAdobeSignClientId и значением идентификатора клиента. В противном случае мы будем повторять попытки доставить уведомление на URL-адрес веб-перехватчика, пока не будет исчерпано заданное максимальное число попыток.
Как было сказано выше, заголовок 'X-AdobeSign-ClientId' , который включается в каждый запрос уведомления от Sign, и значение этого заголовка (идентификатор клиента) должны возвращаться при ответе одним из двух способов:
1. Заголовок HTTP X-AdobeSign-ClientId, значением которого является идентификатор клиента.
|
---|
// Запись идентификатора клиента var clientid = request.headers['X-ADOBESIGN-CLIENTID'];
// Проверка if (clientid ==="BGBQIIE7H253K6") // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { // Возврат в заголовке ответа response.headers['X-AdobeSign-ClientId'] = clientid; response.status = 200; // Значение по умолчанию } |
Пример кода PHP для получения идентификатора клиента, проверки и последующего возвращения в заголовке ответа |
---|
<?php // Запись идентификатора клиента $clientid = $_SERVER['HTTP_X_ADOBESIGN_CLIENTID']; // Проверка if($clientid == "BGBQIIE7H253K6") // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { // Возврат в заголовке ответа header("X-AdobeSign-ClientId:$clientid"); header("HTTP/1.1 200 OK"); // Значение по умолчанию } ?> |
2. Тело ответа в формате JSON с ключом xAdobeSignClientId и значением того же идентификатора клиента
Пример кода Javascript для получения идентификатора клиента, проверки и последующего возвращения в теле ответа |
---|
// Запись идентификатора клиента var clientid = request.headers['X-ADOBESIGN-CLIENTID'];
// Проверка if (clientid ==="BGBQIIE7H253K6") // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { var responseBody = { "xAdobeSignClientId" : clientid // Возвращает идентификатор клиента в теле }; response.headers['Content-Type'] = 'application/json'; response.body = responseBody; response.status = 200; } |
Пример кода PHP для получения идентификатора клиента, проверки и последующего возвращения в теле ответа |
---|
<?php // Запись идентификатора клиента $clientid = $_SERVER['HTTP_X_ADOBESIGN_CLIENTID']; // Проверка if($clientid == "BGBQIIE7H253K6") // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { // Возврат в теле ответа header("Content-Type: application/json"); $body = array('xAdobeSignClientId' => $clientid); echo json_encode($body); header("HTTP/1.1 200 OK"); // Значение по умолчанию } ?> |
Пример тела ответа в формате JSON |
---|
{ "xAdobeSignClientId": "BGBQIIE7H253K6" } |
Предварительные условия
Вам потребуется следующее:
- Учетная запись Microsoft с лицензией на создание приложений Функций Azure;
- Существующее приложение Функций Azure, которое можно создать с помощью https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-azure-function;
- Базовые знания Javascript, чтобы вы могли понимать и писать код на предпочитаемом вами языке программирования.
Процедура создания инициирующего события функций Azure, которое служит веб-перехватчиком Acrobat Sign
Для создания функции инициирующего события HTTP на языке Javascript выполните следующее:
1. Войдите со своей учетной записью Microsoft https://portal.azure.com;
2. Откройте приложение Функций Azure, отображаемое на вкладке «Приложения-функции».
При этом откроется ваш список приложений Функций Azure:
3. Выберите приложение, в котором вы хотите создать новую функцию.
4. Нажмите кнопку «Создать» (+), чтобы создать новую функцию Azure
5. Выберите сценарий Webhook + API и язык Javascript .
6. Нажмите Создать функцию
Вы создали новую функцию, способную обрабатывать входящий запрос API.
Добавление логики для регистрации веб-перехватчика Acrobat Sign
Перед тем, как успешно завершить регистрацию веб-перехватчика, Acrobat Sign проверяет, действительно ли указанный в запросе на регистрацию URL-адрес веб-перехватчика предназначен для получения уведомлений. С этой целью при получении нового запроса на регистрацию веб-перехватчика Acrobat Sign сначала отправляет запрос на проверку URL-адреса веб-перехватчика. Этот запрос на проверку представляет собой запрос HTTPS GET, отправленный на URL-адрес веб-перехватчика с настраиваемым заголовком HTTP X-AdobeSign-ClientId. Значением в этом заголовке является идентификатор клиента того приложения API, которое запрашивает создание и (или) регистрацию веб-перехватчика. Для успешной регистрации веб-перехватчика его URL-адрес должен ответить на этот запрос на проверку, используя код ответа 2XX, А ТАКЖЕ должен отправить одно и то же значение идентификатора клиента одним из следующих двух способов:
У вас есть два варианта действий.
Вариант 1. Передать идентификатор клиента в X-AdobeSign-ClientId в качестве заголовка ответа
Передайте X-AdobeSign-ClientId в заголовке ответа. Это тот же заголовок, который был передан в запросе и должен быть возвращен при ответе.
Замените файл Index.js следующим:
module.exports = function (context, req) {
var clientId = req.headers['x-adobesign-clientid'];
// Проверка подлинности входящего идентификатора клиента
if (clientId === '123XXX456') {
context.res = {
// status: 200, /* По умолчанию: 200 */ // любой ответ 2XX является приемлемым
body: "Notification Accepted",
headers : {
'x-adobesign-clientid' : req.headers['x-adobesign-clientid']
}
};
}
else {
context.res = {
status: 400,
body: "Opps!! Illegitimate Call identified"
};
}
context.done();
};
Проверьте поведение, выполнив имитацию запроса:
1. Нажмите кнопку Тест в правом углу;
2. Смоделируйте фиктивный запрос.
Хотя заголовки ответа не показаны выше, вы можете получить них с помощью имитации запроса через postman, DHC или другую аналогичную службу.
Вариант 2. Передать идентификатор клиента в теле ответа с ключом xAdobeSignClientId
В теле ответа JSON с ключом xAdobeSignClientId, значением которого является тот же идентификатор клиента, который был отправлен в заголовке запроса.
Замените файл Index.js следующим:
module.exports = function (context, req) {
var clientId = req.headers['x-adobesign-clientid'];
// Проверка подлинности входящего идентификатора клиента
if (clientId === '123XXX456') {
context.res = {
// status: 200, /* По умолчанию: 200 */ // любой ответ 2XX является приемлемым
body: {
'xAdobeSignClientId' : clientId
},
headers : {
'Content-Type' : 'application/json'
}
};
}
else {
context.res = {
status: 400,
body: "Opps!! Illegitimate Call identified"
};
}
context.done();
};
Проверьте поведение, выполнив имитацию запроса:
1. Нажмите кнопку Тест в правом углу;
2. Смоделируйте фиктивный запрос.
Обратите внимание, что такое же поведение для clientID ожидается, когда URL-адрес веб-перехватчика получает уведомления POST.
Готовность к использованию
После проверки поведения URL-адрес веб-перехватчика действует по стандартам Acrobat Sign. В дальнейшем вы можете обновить пользовательскую логику в соответствии с вашими требованиями.
Получение URL-адреса функции
- Нажмите Получить URL-адрес функции
Скопируйте URL-адрес и используйте его для создания веб-перехватчиков в Acrobat Sign.
Создание функции AWS Lambda
Чтобы создать функцию AWS Lambda, перейдите к Панели управления AWS и выберите в списке служб AWS Lambda.
- Выберите «Создать функцию Lambda» с помощью варианта «Автор с нуля».
- На странице настроек функции введите имя функции lambdaWebhooks и выберите Node.js 4.3 в качестве среды выполнения
- Для параметра Роль выберите существующую роль или создайте новую на основе шаблона.
- Если вы выбрали Создать новую роль из шаблона(-ов), введите имя роли (например, role-lamda) и выберите Разрешения Simple Microservices из списка Шаблоны политик.
- Нажмите кнопку Создать функцию.
- На странице новой лямбда-функции AWS выберите вариант Изменить встроенный код для параметра Тип ввода кода и сохраните значение обработчика index.handler.
- Добавление логики для регистрации веб-перехватчика Acrobat Sign
Перед тем, как успешно завершить регистрацию веб-перехватчика, Acrobat Sign проверяет, действительно ли указанный в запросе на регистрацию URL-адрес веб-перехватчика предназначен для получения уведомлений. С этой целью при получении нового запроса на регистрацию веб-перехватчика Acrobat Sign сначала отправляет запрос на проверку URL-адреса веб-перехватчика. Этот запрос на проверку представляет собой запрос HTTPS GET, отправленный на URL-адрес веб-перехватчика с настраиваемым заголовком HTTP X-AdobeSign-ClientId. Значением в этом заголовке является идентификатор клиента того приложения API, которое запрашивает создание и (или) регистрацию веб-перехватчика. Для успешной регистрации веб-перехватчика его URL-адрес должен ответить на этот запрос на проверку, используя код ответа 2XX, А ТАКЖЕ должен отправить одно и то же значение идентификатора клиента одним из следующих двух способов: Обратите внимание, что такое же поведение для clientID ожидается, когда URL-адрес веб-перехватчика получает уведомления POST.
Действуйте по одному из следующих сценариев:
Сценарий 1. Передача идентификатора клиента в заголовке ответа X-AdobeSign-ClientId
- Передайте X-AdobeSign-ClientId в заголовке ответа. Это тот же заголовок, который был передан в запросе и должен быть возвращен при ответе.
Фрагмент кода
В файле index.js замените автоматически сгенерированный фрагмент кода следующим:
- Передайте X-AdobeSign-ClientId в заголовке ответа. Это тот же заголовок, который был передан в запросе и должен быть возвращен при ответе.
Пример кода JS для получения идентификатора клиента, проверки и последующего возвращения в заголовке ответа |
---|
exports.handler = function index(event, context, callback) { // Запись идентификатора клиента var clientid = event.headers['X-AdobeSign-ClientId'];
// Проверка if (clientid =="BGBQIIE7H253K6")) // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { var response = { statusCode: 200, headers: { "X-AdobeSign-ClientId": clientid } }; callback(null,response); } else { callback("Oops!! illegitimate call"); } } |
Сценарий 2. Передача идентификатора клиента в теле ответа с ключом xAdobeSignClientId
В теле ответа JSON с ключом xAdobeSignClientId, значением которого является тот же идентификатор клиента, который был отправлен в заголовке запроса.
Фрагмент кода
Замените файл Index.js следующим:
Пример кода JS для получения идентификатора клиента, проверки и последующего возвращения в заголовке ответа |
---|
exports.handler = function index(event, context, callback) { // Запись идентификатора клиента var clientid = event.headers['X-AdobeSign-ClientId'];
// Проверка if (clientid =="BGBQIIE7H253K6")) // Заменить BGBQIIE7H253K6 идентификатором клиента приложения на момент создания веб-перехватчика { var responseBody = { xAdobeSignClientId : clientid };
var response = { statusCode: 200, body: JSON.stringify(responseBody) };
callback(null,response); } else { callback("Opps!! illegitimate call"); } } |
- Сохраните функцию: Лямбда-функция создана, и мы почти готовы использовать ее в веб-перехватчике в режиме реального времени.
Настройка шлюза API AWS
Чтобы сделать эту лямбда-функцию общедоступной через метод HTTP, нам нужно настроить шлюз API AWS, используя созданную выше функцию в качестве серверной части API.
В консоли управления AWS выберите в списке сервисов AWS шлюз API и нажмите кнопку Создать API.
- На странице Создание нового API выберите Новый API и введите webhooks в параметре Имя API.
- Нажмите кнопку Создать API.
- Раскройте список Действия и выберите в нем Создать ресурс.
- Поставьте отметку напротив варианта Настроить в качестве ресурса прокси, введите validate в поле Имя ресурса и {proxy+} в поле Путь к ресурсу.
- Оставьте пустым поле для отметки напротив варианта Включить CORS шлюза API и нажмите кнопку Создать ресурс.
- Оставьте прокси-сервер функции Lambda выбранным в качестве типа интеграции и выберите регион, в котором вы создали свою функцию Lambda, из раскрывающегося списка регионов Lambda (это может быть тот же регион, где вы создаете шлюз API).
- Укажите validate в качестве Функции Lambda и нажмите кнопку Сохранить.
- Во всплывающем окне Добавить разрешение в функцию Lambda нажмите ОК.
Если все перечисленные выше шаги выполнены успешно, вы увидите что-то подобное:
Развертывание API
Следующий этап — развертывание этого API, чтобы подготовить его к использованию.
- В раскрывающемся списке Действия выберите Развернуть API.
- Выберите [Новый этап] в разделе Этап развертывания и введите prod (или любое другое понятное название) в поле Название этапа.
- Нажмите кнопку Развернуть.
Теперь API готов к использованию, и вы можете найти URL-адрес для его вызова в синем окошке, как показано ниже.
Запишите этот URL-адрес, так как вам нужно будет ввести его в качестве URL-адреса веб-перехватчика в реальном времени.
Готовность к использованию
Готово. Используйте указанный выше URL-адрес с постфиксом «/{nodeJSfunctionName}» в качестве URL-адреса веб-перехватчика в запросе API POST /webhooks. После проверки поведения URL-адрес веб-перехватчика действует по стандартам
Acrobat Sign. В дальнейшем вы можете обновить пользовательскую логику в соответствии с вашими требованиями.
Включение и отключение функции
Доступ к функции веб-перехватчиков для учетных записей корпоративного уровня включен по умолчанию.
Администраторы на уровне группы могут создавать и контролировать веб-перехватчики, которые работают только в пределах их групп.
Доступ к странице Веб-перехватчики можно получить через панель слева в меню администратора.
Ограничение скорости на основе одновременного выполнения
Для создания веб-перехватчика (и обратного вызова) и событий уведомления ограничено количество одновременных уведомлений, отправляемых клиенту системой Acrobat Sign. Ограничение применяется к учетной записи для включения всех групп в ней.
Этот тип ограничения скорости позволяет предотвратить чрезмерное потребление плохо разработанной учетной записью ресурсов сервера, что в итоге оказывает негативное влияние на всех остальных клиентов в этой среде сервера.
Количество одновременных событий для учетной записи рассчитывается так, чтобы обеспечить учетным записям с хорошо настроенными веб-перехватчиками скорейшее получение уведомлений и предотвратить задержки из-за слишком большого количества запросов. Текущие пороговые значения:
Действие |
Макс. кол-во |
Описание |
Создание веб-перехватчика |
10 |
Для каждой учетной записи разрешено не более 10 одновременных запросов на создание веб-перехватчиков. |
Уведомление веб-перехватчика/обратного вызова |
30 |
Для каждой учетной записи разрешено не более 30 одновременных уведомлений веб-перехватчика и обратного вызова. |
Рекомендации
- Подпишитесь на конкретные события, чтобы ограничить количество запросов HTTPS к серверу. Чем более конкретны ваши веб-перехватчики, тем меньший объем информации будет необходимо обрабатывать.
- Устойчивость к дублированию. Если у вас больше одного приложения, использующего один и тот же URL-адрес веб-перехватчика, и с каждым приложением сопоставлен один и тот же пользователь, одно и то же событие будет отправляться на ваш веб-перехватчик несколько раз (по одному разу для каждого приложения). В некоторых случаях ваш веб-перехватчик может получать дубликаты событий. Ваше приложение веб-перехватчика должно относиться к этому спокойно и выполнять дедупликацию по идентификатору события.
- Быстрый ответ веб-перехватчику. У приложения есть всего пять секунд для ответа на запрос веб-перехватчика. В случае запроса на проверку это не проблема, поскольку вашему приложению не нужно выполнять никакой реальной работы для ответа. В случае запросов уведомления вашему приложению понадобится выполнить ряд действий для ответа на запрос. Рекомендуется работать либо в отдельной ветке или асинхронно при помощи очереди, чтобы ответ отправлялся в течение 5 секунд.
- Управление одновременным выполнением. Когда пользователь быстро вносит несколько изменений, приложение может почти одновременно получить несколько уведомлений о действиях одного пользователя. Если вы не будете следить за параллельным доступом, ваше приложение может обрабатывать одни и те же изменения для каждого пользователя несколько раз. Чтобы пользоваться преимуществами веб-перехватчиков Acrobat Sign, важно четко понимать правила использования информации. Обязательно задайте себе следующие вопросы:
- Какие данные являются полезными при ответе?
- Кто получит доступ к этой информации?
- Какие решения и какие отчеты будут создаваться по этим данным?
- Рекомендации по получению подписанных документов. Есть несколько важных факторов, которые нужно учесть при выборе методов получения подписанных PDF от Acrobat Sign в систему управления документами.
Вполне допустимо просто выбрать вариант Документ, подписанный соглашением при создании веб-перехватчика, но вы можете также применить API Acrobat Sign для получения данных при уведомлении о создании события (например, при переходе соглашения в состояние «Готово»).
Дополнительные сведения...
Ограничения на размер кода JSON
Рабочая нагрузка JSON не может иметь размер более 10 МБ.
Если событие создает более крупную рабочую нагрузку, веб-перехватчик все равно будет вызван, но без условных атрибутов параметров (если они присутствовали в запросе), что позволяет снизить размер полезной нагрузки.
В этой ситуации в ответ включается параметр ConditionalParametersTrimmed, чтобы уведомить клиента об удалении информации conditionalParameters.
Параметр conditionalParametersTrimmed является объектом с типом массив, который содержит сведения об отброшенных ключах.
Отбрасывание применяется в следующем порядке:
- includeSignedDocuments
- includeParticipantsInfo
- includeDocumentsInfo
- includeDetailedInfo
Первыми отбрасываются подписанные документы, затем сведения об участнике, сведения о документе, и наконец подробные сведения.
Такое может происходить, например, при создании события завершения соглашения, если в него включается не только подписанный документ в кодировке base64, но и соглашение с несколькими полями формы.
Веб-перехватчики Acrobat Sign доставляют уведомления отправителю соглашения и любому веб-перехватчику, настроенному в группе, из которой отправлено соглашение. Веб-перехватчики на уровне учетной записи получают все события.
Отправитель: Пользователь A | Подписант: Пользователь B | Получатель общего доступа: Пользователь C
Пользователь А и Пользователь В находятся в разных учетных записях
Пользователь А и Пользователь С находятся в разных учетных записях
Пример использования |
Уведомление? |
Комментарии/заметки |
Учетная запись Пользователя А имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя А). |
Да |
Веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ получает уведомления обо всех событиях, которые происходят в этой учетной записи. |
Учетная запись Пользователя А имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя А). Предположение: Пользователь А и администратор группы находятся в одной группе. |
Да |
Веб-перехватчик уровня ГРУППА получает уведомления обо всех событиях, происходящих в этой группе. |
У Пользователя А веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Да |
В роли отправителя срабатывает веб-перехватчик Пользователя А уровня ПОЛЬЗОВАТЕЛЬ |
У Пользователя А веб-перехватчик уровня РЕСУРС (для указанного выше документа). |
Да |
|
Учетная запись Пользователя В имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя В). |
Нет |
Веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ Пользователя В считается веб-перехватчиком Подписанта. |
Учетная запись Пользователя В имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя В). Предположение: Пользователь В и администратор группы находятся в одной группе. |
Нет |
Веб-перехватчик уровня ГРУППА Пользователя В считается веб-перехватчиком Подписанта. |
У Пользователя В веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Нет |
Веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ Пользователя В считается веб-перехватчиком Подписанта. |
Учетная запись Пользователя С имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя С). |
Нет |
Веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ Пользователя С считается веб-перехватчиком стороны, не являющейся инициатором. |
Учетная запись Пользователя С имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя С). Предположение: Пользователь С и администратор группы находятся в одной группе. |
Нет |
Веб-перехватчик уровня ГРУППА Пользователя С считается веб-перехватчиком стороны, не являющейся инициатором. |
У Пользователя С веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Нет |
Веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ Пользователя С считается веб-перехватчиком стороны, не являющейся инициатором. |
Отправитель: Пользователь A | Подписант: Пользователь B | Получатель общего доступа: Пользователь C
Пользователь А, Пользователь В и Пользователь С находятся в одной учетной записи
Пример использования |
Уведомление? |
Примечания |
Учетная запись Пользователя А имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя А). |
Да |
Веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ уведомляет о событиях, запущенных этой учетной записью. |
Учетная запись Пользователя А имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя А). Предположение: Пользователь А и администратор группы находятся в одной группе. |
Да |
Веб-перехватчик уровня ГРУППА уведомляет о событиях, запущенных пользователями в этой группе. |
У Пользователя А веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Да |
В роли отправителя срабатывает веб-перехватчик Пользователя А уровня ПОЛЬЗОВАТЕЛЬ |
У Пользователя А веб-перехватчик уровня РЕСУРС (для упомянутого выше документа). |
Да |
|
Учетная запись Пользователя В имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя В). |
Да |
Поскольку Пользователь А и Пользователь В находятся в одной учетной записи, веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ получает уведомления обо всех событиях, которые происходят в этой учетной записи. |
Учетная запись Пользователя В имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя В). Предположение: Пользователь А, Пользователь В и администратор группы находятся в одной группе. |
Да |
Поскольку Пользователь А и Пользователь В находятся в одной группе, веб-перехватчик уровня ГРУППА получает уведомления обо всех событиях, которые происходят в этой группе. |
Учетная запись Пользователя В имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя В). Предположение: Пользователь А и Пользователь В находятся в разных группах. |
Нет |
Веб-перехватчик уровня ГРУППА Пользователя В считается веб-перехватчиком Подписанта. Веб-перехватчик Пользователя А (РЕСУРС/ПОЛЬЗОВАТЕЛЬ/ГРУППА/УЧЕТНАЯ ЗАПИСЬ) будет запущен. |
У Пользователя В веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Нет |
В роли получателя веб-перехватчик Пользователя В уровня ПОЛЬЗОВАТЕЛЬ не срабатывает. |
Учетная запись Пользователя С имеет веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ (созданный администратором учетной записи Пользователя С). |
Да |
Поскольку Пользователь А и Пользователь С находятся в одной учетной записи, веб-перехватчик уровня УЧЕТНАЯ ЗАПИСЬ получает уведомления обо всех событиях, которые происходят в этой учетной записи. |
Учетная запись Пользователя С имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя С). Предположение: Пользователь А, Пользователь С и администратор группы находятся в одной группе. |
Да |
Поскольку Пользователь А и Пользователь С находятся в одной группе, веб-перехватчик уровня ГРУППА получает уведомления обо всех событиях, которые происходят в этой группе. |
Учетная запись Пользователя С имеет веб-перехватчик уровня ГРУППА (созданный администратором учетной записи/группы Пользователя С). Предположение: Пользователь А и Пользователь С находятся в разных группах. |
Нет |
Веб-перехватчик уровня ГРУППА Пользователя С считается веб-перехватчиком стороны, не являющейся инициатором. Веб-перехватчик Пользователя А (РЕСУРС/ПОЛЬЗОВАТЕЛЬ/ГРУППА/УЧЕТНАЯ ЗАПИСЬ) будет запущен. |
У Пользователя С веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ. |
Нет |
Веб-перехватчик уровня ПОЛЬЗОВАТЕЛЬ Пользователя С считается веб-перехватчиком стороны, не являющейся инициатором. |
Повторная попытка при отключенной службе
Если целевой URL-адрес веб-перехватчика по какой-либо причине отключен, Acrobat Sign поместит документ JSON в очередь и будет в течение 72 часов повторять попытку отправки с нарастающими интервалами.
Недоставленные события сохраняются в очереди повторных попыток, и в течение следующих 72 часов предпринимаются все возможные усилия для доставки уведомлений в том порядке, в котором они создавались.
Стратегия повторной доставки уведомлений заключается в удвоении времени между попытками, начиная с 1-минутного интервала, увеличивающегося до 12 часов, что обеспечивает 15 попыток за 72 часа.
Если веб-перехватчик не отвечает в течение 72 часов и за последние 7 дней не зарегистрировано ни одной успешной доставки, этот веб-перехватчик отключается. На этот URL-адрес более не будут отправляться уведомления, пока администратор не включит веб-перехватчик снова.
Все уведомления за период, пока веб-перехватчик находится в отключенном состоянии, будут потеряны.