Аутентификация 1С

Курс

Аутентификация 1С:Предприятия

Аутентификация — это подтверждение, что пользователь действительно тот за кого себя выдает.

Средствами платформы аутентификация выполняется через проверку пароля пользователя.

Для включения аутентификации средствами платформы нужно в настройках пользователя установить флаг Аутентификация 1С:Предприятия:

Аутентификация 1С:Предприятия

Ниже можно указать пароль пользователя. Тогда для входа в программу нужно ввести логин и пароль:

Аутентификация 1С:Предприятия

Если у пользователя снят флаг Аутентификация 1С:Предприятия, то он не будет отображаться в списке выбора пользователей.

Аутентификация операционной системы

Аутентификация операционной системы работает только для Windows. Но если подключение выполняется через веб-сервер Apache, то аутентификация операционной системы не будет работать.

В настройках пользователя нужно установить флаг Аутентификация операционной системы и выбрать одного из пользователей операционной системы:

Аутентификация операционной системы

При запуске платформа запросит имя пользователя у операционной системы, затем проверит есть ли в списке пользователей 1С пользователь, у которого указана аутентификация операционной системы и указан текущий пользователь ОС. Если такой пользователь 1С есть, то программа будет запущена под ним без запроса логина и пароля. Если нет такого пользователя, то будет выведен стандартный диалог ввода логина и пароля (если установлен флаг Аутентификация 1С:Предприятия).

При этом в списке пользователей должен быть хотя бы один пользователь с административными правами, у которого настроена аутентификация 1С:Предприятия. Иначе будет выдана ошибка «После исполнения в списке не осталось бы ни одного пользователя с административными правами, допускающего аутентификацию средствами 1С:Предприятия!»:

Аутентификация операционной системы

Для одного пользователя может быть одновременно включена и аутентификация средствами операционной системы и аутентификация 1С:Предприятия.

OpenID-аутентификация

OpenID-аутентификация позволяет использовать для аутентификации в 1С внешний OpenID-провайдер. OpenID-провайдером может быть как база на платформе 1С, так и внешняя система, которая реализует работу по протоколу OpenID Authentication 2.0 и расширение этого протокола, реализованное в платформе 1С.

Преимущество данной аутентификации в том, что один провайдер может использоваться для аутентификации в нескольких базах 1С. Достаточно аутентифицироваться в одной базе, чтобы в другие входить без ввода логина и пароля.

Подключение к OpenID-провайдеру может выполняться только по HTTPS. Доступ к OpenID-клиентам должен быть настроен через HTTP или HTTPS.

Алгоритм аутентификации через OpenID выглядит следующим образом:

  1. Создается отдельная база 1С, в которой создается список пользователей и их пароли. Конфигурация данной базы не имеет значения, это может быть даже пустая конфигурация. Это будет OpenID-провайдер. Данная база публикуется на веб-сервере, с указанием признака использования как OpenID-провайдера.
  2. В базах OpenID-клиентах для пользователей указывается признак OpenID-аутентификации. Данные базы тоже должны быть опубликованы на веб-сервере. При публикации указывается признак использования OpenID-аутентификации и адрес OpenID-провайдера (обязательно через HTTPS).
  3. При первом входе в базу OpenID-клиента будет выполнен запрос на OpenID-провайдер и будет открыто окно для ввода логина и пароля. Здесь нужно ввести логин и пароль базы OpenID-провайдера. Сопоставление с OpenID-клиентом выполняется по имени пользователя. Если пароль верный, то будет выполнен вход в базу OpenID-клиента. Признак аутентификации данного пользователя будет сохранен в куках браузера или тонкого клиента 1С.
  4. Если сейчас попробовать войти во вторую базу OpenID-клиент и в этой базе есть пользователь с таким же именем, то автоматически будет выполнена аутентификация под этим пользователем, без ввода логина и пароля.

О том как установить веб-сервер, опубликовать на нем базу 1С и настроить HTTPS можно прочитать в этом курсе.

Сначала опубликуем на веб-сервере OpenID-провайдер. Это будет база 1С с пустой конфигурацией:

OpenID-провайдер

Чтобы данную базу можно было использовать как OpenID-провайдер нужно на закладке OpenID установить флаг Использовать в качестве OpenID-провайдера и указать Время жизни аутентификации в секундах. После истечения этого времени нужно будет снова ввести логин и пароль при входе в 1С.

Использовать в качестве OpenID-провайдера

В файл dafault.vrd будет добавлена информация о том, что база используется как OpenID-провайдер и время жизни аутентификации:

В базе OpenID-провайдере не нужно устанавливать у пользователя признак Аутентификации OpenID. Здесь нужно использовать аутентификацию 1С:Предприятия или операционной системы. И именно здесь нужно указать логин и пароль пользователя.

аутентификацию 1С:Предприятия

В базе OpenID-клиенте нужно установить флаг Публиковать доступ для клиентских приложений, а также на закладке OpenID нужно установить флаг Использовать OpenID-аутентификацию и указать адрес OpenID-провайдера:

Публиковать доступ для клиентских приложений
Использовать OpenID-аутентификацию

Адрес OpenID-провайдера обязательно должен быть указан с использованием протокола HTTPS. После адреса публикации базы 1С всегда указывается строка /e1cib/oid2op

В файл dafault.vrd будет добавлен адрес OpenID-провайдера:

Для проверки доступа к OpenID-провайдеру можно в адресную строку браузера ввести путь до публикации https://DESKTOP-6BFLRFR:/OpenIDProvider/e1cib/oid2op. В ответ должен скачаться XRDP-файл с настройками.

В базах-клиентах для пользователя должен быть установлен флаг Аутентификация OpenID:

Аутентификация OpenID

А также имя пользователя должно совпадать с именем одного из пользователей базы-провайдера. Пароль не имеет значения.

Если сейчас в браузере обратиться к базе OpenID-клиенту, то будет выполнено перенаправление на адрес OpenID-провайдера с добавлением в конце /e1cib/oid2op. А также будет открыто окно для ввода логина и пароля. Здесь не доступен список выбора, логин нужно вводить вручную.

Аутентификация OpenID

При входе через тонкий клиент окно ввода пароля выглядит так:

Аутентификация OpenID

Чтобы через тонкий клиент подключиться к базе, расположенной на веб-сервере, нужно при подключении базы указать, что она расположена на веб-сервере и указать адрес информационной базы:

на веб-сервере

Если сейчас аутентифицировать в первой базе-клиенте под пользователем Иванов, то при входе во вторую базу-клиента не будет диалога ввода логина и пароля. Сразу будет осуществлен вход под пользователем Иванов (при условии, что в этой базе есть такой пользователь и для него указана аутентификация OpenID).

Данные аутентификации сохраняются отдельно в куках каждого браузера. Тонкий клиент 1С имеет свое хранилище. Поэтому, если аутентифицироваться под тонким клиентом 1С, а потом попробовать войти через браузер, то снова нужно будет вводить логин и пароль.

Данные аутентификации хранятся в течении времени, указанном в свойстве Время жизни аутентификации при публикации базы-провайдера. Если просто закрыть окно с программной или браузер, то данные аутентификации не будут удалены из куков. Чтобы их удалить нужно в правом верхнем углу нажать на имя пользователя и выбрать Завершить работу:

Завершить работу

Если при аутентификации установить флаг Не запоминать меня, то данные аутентификации не будут сохранены в куках.

Не запоминать меня

Аутентификация OpenID Connect

Протокол OpenID Connect позволяется выполнить аутентификацию с помощью стороннего провайдера. Данный протокол является расширением протокола авторизации OAuth 2.0. В качестве стороннего провайдера нельзя использовать базу 1С, только внешние провайдеры, например:

  • Google
  • Microsoft Azure
  • Microsoft Active Directory Federation Services (AD FS)
  • Единая система идентификации и аутентификации (ЕСИА).

Пример настройки аутентификации с помощью OpenID Connect можно посмотреть здесь.

Двухфакторная аутентификация

Двухфакторная аутентификация заключается в том, что пользователю нужно дважды подтвердить что это он. В первый раз он вводит логин и пароль. Второй раз вводит код доступа, который был выслан ему на мобильный телефон или на почту, или подтверждает себя через отпечаток пальца и т.п.

Проверку логина и пароля берет на себя платформа 1С. Для проверки второго фактора используется сторонний сервис, в том числе разработанный на 1С.

Возможны два сценария использования второго фактора аутентификации:

  • Простой провайдер — платформа генерирует код доступа, провайдер доставляет этот код до пользователя (через SMS, почту или еще как-нибудь), пользователь вводит данный код и платформа проверяет его правильность.
  • Умный провайдер — в этом случае провайдер сам генерирует код доступа, доставляет его до пользователя и проверяет его (или использует любой другой вариант аутентификации, например проверку отпечатка пальца). После этого платформа запрашивает у провайдера результат аутентификации.

Простой провайдер

Алгоритм действий:

  1. Пользователь вводит логин и пароль. Если пароль верный и для пользователя настроена двухфакторная аутентификация, то платформа показывает ему диалог для ввода кода доступа.
  2. Платформа генерирует код доступа и через HTTP-запрос отправляет его провайдеру. Провайдером может быть как HTTP-сервис 1С, так и внешний сервис.
  3. Провайдер отправляет код доступа пользователю, например на телефон через SMS.
  4. Пользователь получает код доступа и вводит его в диалог, показанный на первом шаге.
  5. Платформа проверяет код доступа и если он верный, то пользователь считается аутентифицированным.

Для примера разработаем простой HTTP-сервис, который сможет обрабатывать POST запросы:

HTTP-сервис
HTTP-сервис
HTTP-сервис
HTTP-сервис

Для тестирования в модуле HTTP-сервиса сделаем запись кода доступа в журнал регистрации:

Настройка второго фактора аутентификации выполняется с помощью программного объекта ШаблонНастройкиВторогоФактораАутентификации. Данный объект может быть записан в базу данных, а потом назначен конкретному пользователю.

Данный объект создается с помощью метода СоздатьШаблон. У созданного шаблона нужно заполнить два свойства:

  • HTTPЗапросНаАутентификацию — тип HTTPЗапрос. Здесь нужно указать адрес провайдера, куда платформа отправит HTTP-запрос. В адресе ресурса и в теле запроса можно использовать параметры, они должны начинаться с амперсанда «&». В дальнейшем для каждого пользователя можно будет указать свои значения параметров.
  • МетодHTTPЗапросаНаАутентификацию — тип Строка. HTTP-метод, который будет отправлен провайдеру.

Назначение шаблона пользователю выполняется программно через свойство НастройкиВторогоФактораАутентификации. В данное свойство записывается массив объектов НастройкаВторогоФактораАутентификации. В объекте НастройкаВторогоФактораАутентификации указывается имя шаблона и заполняются параметры, если они были в шаблоне:

В шаблоне мы использовали два параметра: &host и &secret. Но в параметрах заполнили только один — host. Параметр secret является предопределенным и автоматически заменяется на сгенерированный платформой код доступа. Замена параметров выполняется в адресе ресурса, в теле запроса и в заголовках запроса.

В массив можно передать несколько шаблонов и через свойство ОбработкаНастроекВторогоФактораАутентификации указать, что делать если первый шаблон не работает. Если данное свойство равно ИспользоватьСледующуюПриОшибке, то будет вызван следующий шаблон. Если свойство равно НеИспользовать, то данный шаблон пропускается.

Теперь после стандартного ввода логина и пароля будет открыто окно для ввода кода доступа:

Двухфакторная аутентификация

Так как мы в модуле HTTP-сервиса записали его в журнал регистрации, то можем там его и посмотреть. Длина кода доступа всегда равна 5 символам:

код доступа

Если нажать на гиперссылку Отправить заново, то будет сгенерирован новый код доступа и отправлен провайдеру.

После ввода кода доступа пользователь будет аутентифицирован.

Если ввести неправильный код доступа, то будет получена ошибка «Код введен не верно»:

Код введен не верно

Умный провайдер

Алгоритм действий:

  1. Пользователь вводит логин и пароль. Если пароль верный и для пользователя настроена двухфакторная аутентификация, то платформа показывает ему окно проверки второго фактора. Здесь уже нет поля для ввода кода доступа.
  2. Платформа отправляет HTTP-запрос провайдеру с просьбой аутентифицировать пользователя.
  3. Провайдер самостоятельно выполняется аутентификацию пользователя.
  4. После прохождения аутентификации пользователь нажимает в окне проверки второго фактора ОК.
  5. Платформа отправляет HTTP-запрос провайдеру с вопросом о результате аутентификации второго фактора. Если аутентификация прошла успешно, то пользователь считается аутентифицированным.

Добавим в HTTP-сервис метод GET. Он будет использоваться для проверки результата аутентификации:

HTTP-сервис
HTTP-сервис

И добавим обработчик данного метода, который всегда будет возвращать код 200, что значит аутентификация пройдена успешно:

В шаблон настроек добавим HTTP-запрос для получения результата:

Теперь после ввода логина и пароля будет показано окно с просьбой пройти дополнительную проверку доступа:

Двухфакторная аутентификация

По нажатию на ОК будет будет выполнен GET запрос к HTTP-сервису. Так как HTTP-сервис вернул код 200, то будет выполнен вход в программу.

Если поменять код ответа на 400:

То будет выдана ошибка «Не выполнена дополнительная проверка доступа»:

Не выполнена дополнительная проверка доступа

Работа с шаблонами настроек второго фактора

Чтобы получить все шаблоны настроек второго фактора используется метод ПолучитьШаблоны:

Если нужно получить какой-то один шаблон, то используется метод НайтиПоИмени:

Для удаления шаблона используется метод Удалить:


Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok