ЭЦП - это аббревиатура, расшифровывающаяся как электронная цифровая подпись. Это набор данных, которые используются для подтверждения подлинности и целостности электронных документов и сообщений. С помощью ЭЦП можно защитить документы от подделки и внести ясность в вопрос об их авторстве и целостности содержания, также ЭЦП используется для подтверждения личности и авторизации в различных системах и приложениях.
Авторизация - это процесс подтверждения права пользователя на доступ к определенным ресурсам или операциям в системе. Авторизация может быть реализована различными способами, включая ввод логина и пароля, использование токенов или сертификатов, биометрическую аутентификацию и другие методы.
Для начала настройки авторизации, необходимо получить доступ к самому ЭЦП, процесс получения ЭЦП в данной статье освещаться не будет, так как в свободном доступе достаточно информации на данную тему. И так, представим, что у нас уже есть ЭЦП. После этого необходимо импортировать сертификат с закрытым ключом. Для этого нам понадобится специальное программное средство, мы будем использовать КриптоПро CSP версия 5.0.12997 КС1.
Установка сертификата с закрытым ключом:
1. Откройте .PFX файл. Сразу запустится Мастер импорта сертификатов.
2. Укажите хранилище «Текущий пользователь» и нажмите «Далее» 2 раза (Рисунок 1).
3. Введите пароль, который указывали при экспорте (Рисунок 2).
4. Поставьте галочку на пункте «Пометить этот ключ как экспортируемый…», иначе контейнер нельзя будет скопировать (Рисунок 3).
5. Поставьте галочку на «Поместить все сертификаты в следующее хранилище» и нажмите на кнопку «Обзор» (Рисунок 4).
6. Выберите Хранилище «Личное» и нажмите на кнопку «ОК» (Рисунок 5).
7.
Нажмите на кнопку «Далее» – и «Готово».
8.
В окне КриптоПро выберите носитель, на который хотите сохранить контейнер (Рисунок 6).
7.
При необходимости установите пароль на контейнер.
8.
В случае успеха, появится соответствующее сообщение (Рисунок 7).
После успешной установки сертификата. Перейдем к программной настройке. Данная процедура предназначена для типовых конфигураций, в которых реализован справочник «Сертификаты ключей электронной подписи шифрования». Давайте настроим этот справочник и добавим этот ЭЦП. Для этого переходи в функции технического специалиста, и открываем данный справочник (Рисунок 8).
После чего нажимаем кнопку добавить и выбираем из тех, которые установлены у нас на компьютере (Рисунок 9).
1С предложит нам выбрать вариант использования данного сертификата, выбираем вариант «Для подписания и шифрования» (Рисунок 10).
1С автоматически найдет все сертификаты используемые на компьютере, вам необходимо будет только выбрать тот, который вы собираетесь использовать для авторизации (Рисунок 11).
Проверяем карточку элемента номенклатуры сертификата на корректность заполнения, обязательно обращаем внимание на поле «Действителен до:» (Рисунок 12).
На выходе в вышеуказанном справочнике будет отображаться добавленный сертификат (Рисунок 13).
После этого перейдем к непосредственной разработке. Дальнейшие действия представлены в виде моего личного видения решения данной задачи, вы можете вести разработку иначе, концепция разработки не изменится.
Создадим реквизит на форме и сделаем его тип ссылочным на справочник «Сертификаты ключей электронной подписи шифрования». Добавим кнопку, по которой будет производиться авторизация (Рисунок 14).
В нашем случае мы производим авторизацию на стороннем сервере, используя HTTPзапросы, согласно документации ресурса необходимо правильно передать его адрес и тип (Рисунок 15).
Небольшое отступление. В качестве адреса ресурса всегда будет передаваться разная информация, чтобы правильно ее передать, необходимо ознакомиться с документацией ресурса, к которому вы хотите подключиться.
В качестве типа ресурса передаем наш сертификат, используя ключевые символы «?type=».
Подготавливаем наш запрос. Для этого необходимо получить двоичные данные нашего сертификата. При работе с ранее описанным справочником «Сертификаты ключей электронной подписи шифрования» можно воспользоваться типовой функцией.
Двоичные данные сертификата затем записываются в файл, и тело запроса устанавливается из файла (Рисунок 16).
В теле ответа на запрос «Authenticate» возвращается зашифрованный текст, который нужно расшифровать, используя имеющийся сертификат ЭЦП. Для этого можно использовать встроенный объект 1С "Менеджер криптографии" (Рисунок 17).
Заметим, что вызывая функцию Расшифровать() менеджера криптографии, мы не указываем никакого конкретного сертификата, потому что этот метод пытается выполнить расшифровку используя все доступные сертификаты. На рисунке 18 представлены расшифрованные данные.
После успешной расшифровки, расшифрованные данные нужно закодировать по алгоритму base64, на что в 1С также предусмотрен готовый метод. После кодирования в base64 эти данные нужно подготовить для передачи в запрос в качестве URL-параметра, поэтому следует дополнительно кодировать строку по методу URL и только потом уже формировать адрес ресурса второго запроса (Рисунок 18).
На рисунке 19 показаны данные в формате base64 закодированные методом URL.
Для того чтобы проверить подключение необходимо проверить «КодСостояния» через отладчик, как мы видим HTTPОтвет направил нам код – 200, что говорит о том что авторизация прошла успешно (Рисунок 20).
После успешно выполненной авторизации, можно выполнять различные действия с ресурсом, а именно отправлять, получать, менять данные и т.д. Следует не забывать, что при переходе на другие страницы ресурса в заголовках запроса всегда необходимо передавать параметры для авторизации.
Специалисты компании «1С:БИЗНЕС РЕШЕНИЯ» помогут Вам освоить все возможности программ 1С, помогут установить, проведут бесплатную демонстрацию программ и ответят на вопросы!
Узнать подробнее можно по телефону +7 (3532) 43-05-17.