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

  • автор:

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

OpenID-аутентификация — это один из видов аутентификации, поддерживаемых механизмом аутентификации 1С:Предприятия.

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

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

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

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

Последовательность действий, выполняемых при подключении пользователя, можно рассмотреть на следующей схеме:

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

1- клиентское приложение обращается к информационной базе 1,

2 — информационная база 1 обращается к OpenId-провайдеру с тем, чтобы он аутентифицировал пользователя,

3 — OpenID-провайдер выполняет процедуру аутентификации: пользователь вводит логин и пароль; в случае успешной аутентификации на компьютере пользователя в cookie сохраняется признак того, что провайдер аутентифицировал пользователя,

4 — используя признак аутентификации, сохраненный в cookie, пользователь подключается к информационной базе 1 и начинает работу,

5, 6 — при обращении к другой информационной базе, пользователю не нужно снова вводить логин и пароль; на основании признака аутентификации, сохраненного ранее в cookie, OpenID-провайдер выполняет аутентификацию незаметно для пользователя.

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

Как настроить 1С аутентификацию OpenID?

Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:

spoiler# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)

openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt
Файл default.vrd для базы провайдера:
spoiler<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/openidprov» ib=»Srvr=srv1c;Ref=OpenIDProv;»> <standardOdata enable=»false» reuseSessions=»autouse» sessionMaxAge=»20″ poolSize=»10″ poolTimeout=»5″/> <b><openid> <provider> <lifetime>86400</lifetime> </provider> </openid></b> </point>
Файл default.vrd для базы клиента OpenID:
spoiler<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/test-openid-client» ib=»Srvr=srv1c;Ref=test-openid-client;»> <standardOdata enable=»false» reuseSessions=»autouse» sessionMaxAge=»20″ poolSize=»10″ poolTimeout=»5″/> <openid> <rely url=»https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op» /> </openid> </point>
В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)
В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.
При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: «Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op».
В технологическом журнале при этом такая ошибка: «Ошибка работы с Интернет: Удаленный узел не прошел проверку».
Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.
Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:
spoiler<?xml version=»1.0″ encoding=»UTF-8″?> <xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»> <XRD> <Service priority=’0′> <Type>http://specs.openid.net/auth/2.0/server</Type> <URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI> </Service> </XRD> </xrds:XRDS>
Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.
Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.

Печать (Ctrl+P)

1С: Предприятие 8.3.13 . Документация
Руководство администратора
Глава 6. Администрирование информационной базы

6.2.8.1. Общая информация

Аутентификация ‑ проверка принадлежности предъявленного идентификатора (имени) конкретному пользователю системы, проверка подлинности. Система «1С:Предприятие» поддерживает несколько различных вариантов аутентификации, которые будут рассмотрены в следующих разделах.

6.2.8.2. Аутентификация средствами системы «1С:Предприятие»

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

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

Пользователь может быть аутентифицирован неявно средствами операционной системы. Для этого пользователю должен быть поставлен в соответствие некоторый пользователь операционной системы. При старте системы, «1С:Предприятие» запрашивает у операционной системы пользователя, который аутентифицирован в системе в данный момент. Для этого в ОС Windows используется интерфейс SSPI, а в ОС Linux ‑ GSS-API. Затем выполняется проверка, что данному пользователю операционной системы сопоставлен пользователь «1С:Предприятия». Если поиск заканчивается успешно ‑ считается, что пользователь системы «1С:Предприятие» аутентифицирован успешно, и диалог аутентификации не отображается.

ПРИМЕЧАНИЕ 1. Клиентское приложение для ОС Linux или macOS не поддерживает аутентификацию средствами операционной системы.
ПРИМЕЧАНИЕ 2. Не поддерживается аутентификация пользователя средствами операционной системы в том случае, если клиентское приложение подключается к информационной базе через веб-сервер Apache, работающий под управлением ОС Windows.
ПРИМЕЧАНИЕ 3. При работе под управлением ОС Windows, для обеспечения стабильной работы аутентификации ОС при подключении тонким клиентом через веб-сервер или с помощью веб-клиента, необходимо внести адрес используемой информационной базы в список надежных сайтов свойств веб-браузера (Панель управления ‑ Сеть и интернет ‑ Свойства браузера ‑ Безопасность).

Пользователь операционной системы указывается в формате: \\имя_домена\имя_пользователя. При этом имя пользователя не должно содержать символы алфавитов, отличных от латинского алфавита. Формат имени домена и имени пользователя может зависеть от настроек контроллера домена и учетных записей в нем. Определить правильное написание пользователя операционной системы можно по его представлению в событии CONN технологического журнала в свойстве Txt, которое начинается с текста Srvr: DstUserName2:. Например, событие 30:30.551013-0,CONN,2,process=rmngr,OSThread=24204,t:clientID=3,Txt=Srvr: DstUserName2: d1.d2\user1(d1.d2\user1) значит, что в качестве имени пользователя операционной системы в описании пользователя информационной базы должно быть указано \\d1.d2\user1.

Если необходимо принудительно выполнить аутентификацию средствами системы «1С:Предприятие», то в командной строке запуска клиентского приложения следует указать параметр командной строки /WA-. Соответственно, параметр командной строки /WA+ предназначен для принудительного применения аутентификации средствами операционной системы (действует по умолчанию).

Смотри также:

● Технологический журнал (см. ).

6.2.8.4. Аутентификация с помощью OpenID

OpenID (http://openid.net/) ‑ это протокол, который позволяет пользователю использовать единую учетную запись для аутентификации на множестве не связанных друг с другом ресурсов, систем и т. д. Система «1С:Предприятие» использует протокол, созданный на основе протокола OpenID версии 2.0 по модели Direct Identity.

ПРИМЕЧАНИЕ. Данный способ аутентификации не применим при обращении к веб-сервисам, опубликованным из «1С:Предприятия».

Общая схема работы выглядит следующим образом:

● Пользователь пытается выполнить вход в систему.

● Система определяет, что в информационной базе работает OpenID-аутентификация (по файлу публикации default.vrd).

● Провайдеру OpenID отправляется запрос на выполнение аутентификации. Очевидно, что OpenID-провайдер должен быть доступен для обращения с того адреса, на котором опубликована информационная база.

● Если необходимо выполнить интерактивное действие (выполняется первая аутентификация для данного идентификатора или истекло время жизни аутентификационных данных данного идентификатора), то провайдер сообщает системе о необходимости запросить имя и пароль пользователя. Система выполняет интерактивное действие и возвращает провайдеру OpenID запрошенные данные.

Аутентификационные данные пользователя хранятся в файлах cookie, которые размещаются в хранилище, индивидуальном для каждого веб-браузера. Тонкий клиент использует собственное хранилище.

● Если провайдер аутентифицирует пользователя, то системе возвращается признак того, что пользователь аутентифицирован.

OpenID-аутентификация работает только в тех случаях, когда доступ к информационной базе осуществляется по протоколу HTTP и HTTPS. Это означает, что использовать OpenID-аутентификацию могут только веб-клиент, мобильный клиент, а также тонкий клиент, подключенный к информационной базе через веб-сервер. При OpenID-аутентификации возможны кросс-доменные запросы при работе с помощью тонкого клиента, а также с помощью веб-браузеров Mozilla Firefox, Google Chrome, Safari и Microsoft Internet Explorer версий 8 и 9. В веб-браузере Microsoft Internet Explorer версий 6.0 и 7, после ввода имени пользователя и пароля, открывается окно сообщения с запросом подтверждения на выполнение операции. Если пользователь подтверждает выполнение операции ‑ процесс аутентификации продолжается. В противном случае вновь предлагается ввести имя пользователя и пароль.

В качестве OpenID-провайдера может выступать как информационная база «1С:Предприятия», опубликованная на веб-сервере специальным образом, а также произвольная информационная система, которая реализует работу по протоколу OpenID Authentication 2.0 и расширение этого протокола, реализованное в платформе «1С:Предприятие». Адрес используемого OpenID-провайдера следует указать в файле default.vrd (элемент <rely>) при публикации информационной базы, выступающей клиентом OpenID-провайдера.

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

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

● в текущих сеансах этот пользователь будет считаться аутентифицированным до завершения сеансов;

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

Если необходимо принудительно выполнить аутентификацию с помощью OpenID, то в командной строке запуска клиентского приложения следует указать параметр командной строки /OIDA+ (действует по умолчанию). Соответственно, параметр командной строки /OIDA‑ предназначен для принудительного отключения аутентификации с помощью OpenID.

Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. .

Смотри также:

● OpenID Authentication 2.0 (см. http://openid.net/specs/openid-authentication-2_0.html).

● Дополнительные требования к OpenID-провайдеру (см. ).

6.2.8.5. Аутентификация с помощью OpenID Connect

OpenID Connect (http://openid.net/connect/) ‑ это протокол, который является расширением протокола авторизации OAuth 2.0. OpenID Connect позволяет системе «1С:Предприятие» проверить личность пользователя на основе аутентификации, выполненной сторонним провайдером. Данный протокол применим только для работы веб-клиента. Система «1С:Предприятие» не может выступать в роли провайдера OpenID Connect. Для работы используются только внешние провайдеры.

Для сопоставления пользователя «1С:Предприятия» и пользователя провайдера аутентификации используется электронная почта пользователя. Для системы «1С:Предприятие» она предоставляется провайдером OpenID Connect. Электронная почта пользователя должна быть указана в свойстве Имя пользователя информационной базы.

Описание схемы работы с использованием провайдера OpenID Connect см. .

В сервисе 1cfresh.com применяется удобная и надежная система аутентификации пользователей, основанная на технологии OpenID. Благодаря этой технологии, после ввода логина и пароля на любом ресурсе сервиса вы сможете входить без повторного ввода логина и пароля во все компоненты сервиса 1cfresh.com:

  • приложения сервиса;
  • сайт сервиса;
  • форум сервиса;
  • личный кабинет (менеджер сервиса);

а также на сайт Информационно-технологического сопровождения («1С:ИТС»).

Это делает работу с сервисом 1cfresh.com более комфортной для пользователей.

Где хранятся данные OpenID-аутентификации пользователя

Если пользователь вошел в сервис 1cfresh.com, то данные об этом запоминаются в виде cookie для того компьютера и того клиентского приложения (браузера или тонкого клиента «1С:Предприятия 8»), с помощью которых пользователь ввел логин и пароль. В cookie содержится срок годности — 24 часа.

Поэтому если пользователь в течение 24 часов с момента ввода логина и пароля войдет на любой ресурс сервиса 1cfresh.com или на сайт 1С:ИТС с того же компьютера, используя то же клиентское приложение (браузер или тонкий клиент), то ему не придется снова вводить логин или пароль.

Для обеспечения безопасности данные об OpenID-аутентификации, которые запоминаются в виде cookie на компьютере пользователя, не содержат логина и пароля пользователя, по ним невозможно восстановить логин или пароль пользователя. Они «привязаны» к конкретному клиентскому приложению, не могут использоваться где-либо еще и их действие ограничено по времени (24 часа с момента выдачи).

Как завершить сеанс работы с сервисом и сбросить данные OpenID-аутентификации

Если к вашим приложениям могут иметь доступ другие лица, то желательно позаботиться о том, чтобы они не могли войти с вашего компьютера в сервис 1cfresh.com от вашего имени. Для этого перед завершением работы с сервисом 1cfresh.com необходимо сбросить данные OpenID-аутентификации в сервисе, например:

  • нажать на сайте сервиса гиперссылку Выйти:

  • или нажать в любом приложении сервиса кнопку (Сервис и настройки) в правом верхнем углу окна приложения, и затем выбрать команду меню Файл — Завершить работу пользователя…
  • или нажать в строке заголовка приложения надпись с именем пользователя, а в выведенном окошке нажать гиперссылку Завершить работу:

О других способах сброса данных OpenID-аутентификации в сервисе 1cfresh.com можно прочесть в статье .

После сброса данных OpenID-аутентификации при первом обращении к любому компоненту сервиса 1cfresh.com с использованием того же компьютера и клиентского приложения пользователю будет предложено ввести логин и пароль в сервисе 1cfresh.com.

Если вы не желаете пользоваться OpenID-аутентификацией

С приложениями сервиса можно работать и без использования OpenID-аутентификации:

  1. Для вызова приложения сервиса с помощью браузера без использования OpenID-аутентификации можно вызвать приложение по прямой ссылке, добавив после номера приложения (области данных) символы ?oida-

    Для входа в личный кабинет с помощью браузера без использования OpenID-аутентификации следует использовать адрес https://1cfresh.com/a/adm/?oida-

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

  2. При использовании тонкого клиента можно настроить автоматическое добавление приложений сервиса в список информационных баз тонкого клиента, так чтобы при их вызове не использовалась OpenID-аутентификация. Как это сделать, описано в статье .
  3. При использовании тонкого клиента также можно добавить приложение сервиса в список информационных баз тонкого клиента вручную, как описано в статье , указав при добавлении в поле Дополнительные параметры запуска значение /OIDA-.

  • Наше решение обеспечивает лучший на данный момент уровень защиты конфигураций — существующие декомпиляторы не могут восстановить исходный текст. Полностью восстановить исходный текст защищенных модулей невозможно даже теоретически (см. Технология защиты).
  • Тиражное решение гораздо дешевле индивидуально разработанного — при использовании тиражного решения, нет необходимости тратить время на проектирование и разработку системы защиты и системы лицензирования. В то же время для разработки системы защиты конфигурации требуются специальные знания и опыт именно в области защиты ПО в общем и конфигураций 1С в частности. Следует учитывать что любой продукт хорошего качества постоянно развивается (исправляются ошибки, добавляется функционал), и в случае использования «WA: Защита конфигураций» все обновления в рамках одной версии нашей системы будут для Вас бесплатны, и Вам не придется тратить ресурсы на поддержание системы защиты Вашей конфигурации на должном уровне.
  • Модификация защищаемой конфигурации для установки защиты практически не требуется — защита устанавливается на уже готовую конфигурацию и большинство требуемых модификаций выполняется автоматически. Специальных знаний для установки защиты на существующую конфигурацию не требуется — установка защиты на конфигурацию может быть выполнена даже начинающим программистом 1С (см. Описание использования).
  • Вы всегда сможете получить бесплатную профессиональную консультацию по любым вопросам защиты и лицензирования конфигураций (см. Контакты).
  • Вы можете бесплатно протестировать наше решение и только после этого принять решение о покупке.
  • Использование системы лицензирования Sentinel HASP® и GUARDANT® позволит реализовать необходимую политику распространения конфигурации без необходимости модификации этой конфигурации. Современные системы лицензирования позволяют реализовать практически любую схему продаж — демо-верисии, триальные версии, модульное лицензирование, аренду ПО, рассрочку, и т.д. Так же возможно использование программных ключей (HASP SL или Guardant SP), что позволяет распространять ПО только по электронным каналам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *