Аутентификация по протоколу openid 1с что это
Глава 1. Аутентификация OpenID
1.1. Виды аутентификации
Аутентификация – проверка принадлежности предъявленного идентификатора (имени) конкретному пользователю системы, проверка подлинности. Система «1С:Предприятие» поддерживает несколько различных вариантов аутентификации, которые будут рассмотрены в следующих разделах.
1.1.1. Аутентификация средствами системы «1С:Предприятие»
Пользователь может быть аутентифицирован системой «1С:Предприятие» с помощью ввода его имени и пароля (в диалоге аутентификации, в виде параметров командной строки или строки соединения с информационной базой для внешнего соединения или automation-сервера). В этом случае проверка наличия пользователя и корректности ввода его пароля выполняет система «1С:Предприятие».
1.1.2. Аутентификация операционной системы
Пользователь может быть аутентифицирован неявно средствами операционной системы. Для этого пользователю должен быть поставлен в соответствие некоторый пользователь операционной системы. При старте системы, «1С:Предприятие» запрашивает у операционной системы пользователя, который аутентифицирован в системе в данный момент. Для этого в ОС Windows используется интерфейс SSPI, а в ОС Linux — GSS-API. Затем выполняется проверка, что данному пользователю операционной системы сопоставлен пользователь «1С:Предприятия». Если поиск заканчивается успешно – считается, что пользователь системы «1С:Предприятие» аутентифицирован успешно, и диалог аутентификации не отображается.
Примечание. Не поддерживается аутентификация пользователя средствами ОС в том случае, если клиентское приложение подключается к информационной базе через веб-сервер Apache, работающий под управлением ОС Windows.
Пользователь операционной системы указывается в формате: \\имя_домена\имя_пользователя.
1.1.3. Аутентификация с помощью OpenID
OpenID (http://openid.net/) – это протокол, который позволяет пользователю использовать единую учетную запись для аутентификации на множестве не связанных друг с другом ресурсов, систем и т.д. Система «1С:Предприятие» использует протокол, созданный на основе протокола OpenID версии 2.0 по модели Direct Identity.
Примечание 1. Данный способ аутентификации не применим при обращении к веб-сервисам, опубликованным из «1С:Предприятия».
Примечание 2. В роли провайдера OpenID выступает информационная база «1С:Предприятия».
Общая схема работы выглядит следующим образом:
OpenID-аутентифкация работает только в тех случаях, когда доступ к информационной базе осуществляется по протоколу http и https. Это означает, что использовать OpenID-аутентификацию могут только веб-клиент и тонкий клиент, подключенный к информационной базе через веб-сервер. При OpenID-аутентификации возможны кросс-доменные запросы при работе с помощью тонкого клиента, а также с помощью веб-браузеров Mozilla Firefox, Google Chrome, Safari и Microsoft Internet Explorer версий 8 и 9. В веб-браузере Microsoft Internet Explorer версий 6.0 и 7, после ввода имени пользователя и пароля, открывается окно сообщения с запросом подтверждения на выполнение операции. Если пользователь подтверждает выполнение операции — процесс аутентификации продолжается. В противном случае вновь предлагается ввести имя пользователя и пароль.
В качестве OpenID-провайдера выступает информационная база системы «1С:Предприятие». В качестве OpenID-идентификатора используются имена пользователей информационной базы. Такая информационная база должна быть особым образом опубликована на веб-сервере (в файле публикации default.vrd расположен особый элемент) и доступна для информационной базы, которая желает выполнять аутентификацию с помощью OpenID.
В качестве OpenID-идентификатора пользователя выступает свойство Имя пользователя информационной базы OpenID-провайдера. Пароль пользователя также задается в информационной базе OpenID-провайдера. Пароль, заданный в информационной базе, которая является клиентом OpenID-провайдера, игнорируется при выполнении аутентификации с помощью OpenID.
Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. стр. 2.
Для того, чтобы система выполняла аутентификацию с помощью протокола 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-провайдера можно задать время жизни признака аутентифицированности. Это позволяет заново запрашивать аутентификацию в тех случаях, когда подключение к информационным базам происходит с большими промежутками времени.
Вопросы настройки OpenID-аутентификации
В платформе «1С:Предприятие 8» поддерживается стандарт аутентификации OpenID v2 (http://v8.1c.ru/overview/Term_000000799.htm), подробнее о стандарте: http://openid.net/specs/openid-authentication-2_0.html (на английском).
1. Терминология
2. Настройка OpenID
Подробно настройка веб-серверов и OpenID-аутентификации описана здесь.
1. На клиенте в файле default.vrd элемент
должен содержать url-адрес информационной базы, выступающей в роли OP
Внимание! Настройки протокола, имени сервера и порта должны совпадать с теми, которые используются для обращения к OP в других местах.
2. На провайдере в файле default.vrd внутри элемента
должен присутствовать следующий текст:
3. Цепочка сертификатов, которыми подписан сертификат веб-сервера, на котором размещена публикация OP, для версий ниже 8.3.8, должен быть добавлен в cacert.pem (см здесь), а начиная с 8.3.8, в хранилище доверенных корневых сертификатов ОС.
После этого, если для пользователя включена аутентификация OpenID, то при попытке аутентификации в информационной базе, RP будет произведено обращение к публикации OP, для входа с помощью OpenID-аутентификации.
3. Поиск проблемы
Наиболее частое проявление проблемы с конфигурацией OpenID-аутентификации заключается в том, что после настройки по приведенной инструкции пользователь вместо окна аутентификации OpenID видит окно аутентификации локальной информационной базы. Стоит отметить, что для тонкого клиента окна различаются не очень сильно и одним из явных отличий локальной аутентификации является список выбора (combobox control) имен пользователя вместо обычного поля ввода для OpenID-аутентификации. Для веб-клиента всегда можно посмотреть на строку адреса браузера, в которой, при корректной работе OpenID, вместо адреса и пути к публикации клиентской информационной базой (RP), будет адрес и путь к публикации OP.
Ниже приводятся методы локализации и устранения проблемы. Список не является точной последовательностью действий, которую необходимо выполнить, а представляет собой действия, которые в комплексе помогают выявить возможную причину проблемы.
Во всех приведенных примерах используется стандартный порт HTTPS, при использовании других портов, указывайте их. Также используются следующие обозначения:
3.1. Включить логирование на клиенте OpenID
Для этого следует добавить в logcfg.xml указанные строки внутри элемента :
внутри элемента также следует добавить :
Подробнее о настройках технологического журнала см. в документации.
Далее запустить клиента и после получения окна аутентификации изучить созданные им логи. Следует фильтровать события Часто по логам видно, что клиент OpenID не может соединиться с сервером:
это означает следующее:
а) с клиента недоступна публикация OP по HTTPS (смотри пункт о проверке сетевой доступности ниже).
b) цепочка сертификатов, которыми подписан HTTPS-сертификат сайта, на котором опубликован провайдер, не прошла проверку (смотри пункт о проверке сертификатов OP)
3.2. Доступность сервера по сети
Рекомендуется проверить сетевую доступность сервера, выполнив команду:
В случае доступности, соединение должно быть установлено. В случае ошибки необходимо обращаться к сетевым администраторам.
3.3. Тестирование в браузере
Зайти браузером с машины с опубликованным клиентом OpenID, на провайдер OpenID:
и проверить доступен ли адрес (должен скачиваться XRDP файл oid2op c настройками провайдера). Будте внимательны с адресом, который вы используете для проверки, лучше всего скопировать его из default.vrd публикации RP.
В случае, если файл не скачивается, необходима проверка сетевой доступности сервера OP. Так же браузер может выдать предупреждение о неверном сертификате веб сервера, подробнее смотри проверку сертификатов.
3.4. Проверка сертификата OP
Для этого откройте с компьютера с RP публикацию OP по HTTPS в браузере и посмотрите на используемый ими сертификат. Попробуйте разные браузеры, если у вас их больше одного. По ссылке ниже должно открываться окно локального логина в информационной базе OP.
Современные браузеры обычно показывают цветом состояние проверки сертификатов для HTTPS-соединения и позволяют просмотреть информацию о сертификатах для соединения при щелчке на информационную иконку. Подробнее о цепочках сертификатов и их проверке, можно прочитать в руководстве к ОС или браузеру.
Помните, что прохождение валидации сертификатом в браузере, в версиях платформы «1С:Предприятие» младше 8.3.8, не означает, что они пройдут валидацию на клиенте «1С:Предприятия»! Проверьте наличие необходимых сертификатов в cacert.pem.
3.5. Проверка использования прокси
Проверьте настройки прокси общие для ОС и файл inetcfg.xml для платформы (см здесь). Необходимо убедиться, что если приведенные в данном описании проверки работают в браузере, но клиент «Предприятия» по-прежнему не работает, то нет отличий между конфигурацией прокси для вашего браузера и для клиента «Предприятия». По возможности для проверки уберите все прокси. Если это невозможно, проверьте, что они не изменяют HTTPS-траффик путем его дешифрации.
Если по пути от клиента к серверу установлено дешифрующее прокси, то вы сможете увидеть в браузере, что цепочка сертификатов выглядит по-другому. Обычно в ней вместо сертификата подписывающего сертификат сайта с публикацией OP, присутствует сертификат прокси. В этом случае добавлять в доверенные сертификаты нужно именно эту цепочку удостоверяющих сертификатов. Клиенты, проходящие через разные цепочки дешифрующих прокси или вообще не проходящие через них, будут видеть разные цепочки удостоверяющих сертификатов.
Общее правило состоит в том, что на конкретном клиенте сертификат сервера должен быть доверенным с учетом той цепочки сертификатов, как она выглядит с клиента. Т.е. необходимо открыть сертификат сервера с публикацией OP, например, в браузере и проверить, что он является доверенным. Другими словами, при наличии дешифрующего прокси добавлять в качестве доверенного нужно именно сертификат этого прокси, т.к. клиент будет устанавливать защищенное соединение именно с ним.
3.6 Проверка допустимых адресов возврата
Для защиты от перенаправлений на потенциально опасные сайты, начиная с версии 8.3.8, в публикацию OpenID-провайдера добавлен новый элемент returnto. Элемент является необязательным, может не присутствовать или использоваться несколько раз. Содержимое элемента представляет собой регулярное выражение, которое определяет маску разрешенных имен хоста, на который будет производиться возврат (редирект) пользовательского браузера после исполнения команды openid (подробнее см. в документации).
По умолчанию, из соображений безопасности в публикации элементы returnto отсутствуют.
3.7 Соответствие полного имени пользователя и OP URL
Для обеспечения безопасности производится проверка соответствия полного имени пользователя выданного OP и URL сервера OP его выдавшего. Проверка производиться по совпадению протокола, имени и порта сервера указанного в публикации vrd. Параметр openid.identity передается в форме ответа OP к RP на адрес /e1cib/oid2rp. Перехватить ответы можно с помощью прокси, например fiddler. В случае не совпадения в ТЖ логируется ошибка следующего вида:
Например подобная настройка НЕ КОРРЕКТНА (не совпадает порт):
4. Советы для локализации проблемы
5. Известные особенности работы
6. Обращение в поддержку
Если все же ничего не помогает, то при обращении в поддержку желательно предоставить:
Перед отправкой, необходимо учитывать, что в конфигурациях и логах могут быть сохранены персональные данные, и оценить возможность их передачи!
Простой пример работы с аутентификацией OpenID на IIS
В статье приводится простой пример организации аутентификации при помощи OpenID, а также показывается как поднять веб-клиент 1С на веб-сервере IIS.
На компьютере установлено: Windows 10, IIS, 1С:Предприятие 8.3 (8.3.13.1644).
1. Развернем на локальной машине 3 пустых базы 1С: OpenIDServer, OpenIDClient, OpenIDClient2 и опубликуем их на веб-сервере.
В каждой базе создадим Роль «Полные права» и пользователя Admin с паролем 123 (желательно все без русских букв). Для пользователей в конфигураторе обязательно ставим галочку «Аутентификация OpenID»
Дадим пользователю IUSR права доступа к каталогам, где расположены созданные базы для того, чтобы веб-сервер IIS мог обращаться к базам.
Откроем базу OpenIDServer под административными правами, выполним публикацию базы на веб-сервере. Укажем:
Имя базы = OpenIDServer,
Публиковать тонкий клиент и веб-клиент = Истина,
На закладке OpenID: Использовать в качестве OpenID-провайдера = Истина
Также укажем в полях «Разрешенные адреса для переадресации адреса»:
«.*»
«.*\.1c\.ru»
Здесь указываются адреса, которые могут выступать Клиентами, и эта таблица необязательна к заполнению, но по факту если её не заполнить, то при авторизации через Веб-браузер возникает ошибка «Ошибка HTTP 400.0 — Bad request».
База будет опубликована по адресу http://BudnikAsus/OpenIDServer
После публикации базы если зайти в IIS можно войти в веб-клиент базы, это означает что база опубилкована и работает.
База будет опубликована по адресу http://BudnikAsus/OpenIDClient
После публикации базы если зайти в IIS можно войти в веб-клиент базы, это означает что база опубликована и работает. При входе в каждую базу мы видим окно аутентификации, куда нужно вводить логин-пароль. Базы опубликованы по незащищенному протоколу HTTP.
2. Создадим сертификат. Для того, чтобы работала OpenID аутентификация базы должны работать ТОЛЬКО по протоколу HTTPS, для этого необходимо получить сертификат шифрования. Для работы в интернет нужно получить сертификат, привязанный к имени вашего сайта от стороннего провайдера. Для работы в рамках одной сети или в рамках одной организации можно сделать самоподписанный сертификат. (Т.е. корневой сертификат можно сделать общий один на всех клиентов, которому все будут доверять). Так как мы рассматриваем самый простой случай, будем выпускать самоподписанный сертификат.
Сертификат делаем средствами IIS сервера.
Создаем привязки, указывающие на то, что наш веб-сервер будет работать по протоколу HTTPS через порт 443 (стандартный порт протокола HTTPS) с только что созданным сертификатом
Окно аутентификации OpenID отличается от окна аутентификации 1C:Предприятия:
Всё готово!
Теперь если мы заходим в первую базу https://budnikasus/OpenIDClient откроется окно аутентификации OpenID (оно отличается от окна аутентификации базы 1С) и после аутентификации откроется база.
При заходе во вторую базу https://budnikasus/OpenIDClient2 пароль вводить уже не надо.
Это происходит из-за того, что запрос аутентификации проходит по адресу
https://budnikasus:443/OpenIDServer/e1cib/oid2op?cmd=form а окно OpenID открывается по адресу
1С же требует точного совпадения адреса.
Откроем файл «C:\inetpub\wwwroot\OpenIDServer\default.vrd» и добавим свойство :
Рекомендации по поиску ошибок:
Аутентификация 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С и настроить HTTPS можно прочитать в этом курсе.
Сначала опубликуем на веб-сервере OpenID-провайдер. Это будет база 1С с пустой конфигурацией:
Чтобы данную базу можно было использовать как OpenID-провайдер нужно на закладке OpenID установить флаг Использовать в качестве OpenID-провайдера и указать Время жизни аутентификации в секундах. После истечения этого времени нужно будет снова ввести логин и пароль при входе в 1С.