Простой пример работы с аутентификацией OpenID на IIS

26.12.19

Администрирование - Администрирование веб-серверов

OpenID, аутентификация, HTTPS, получение сертификата SSL, веб-сервер IIS, Internet Information Server, самоподписанный сертификат, самозаверенный сертификат.

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

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

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

На компьютере установлено: 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 можно войти в веб-клиент базы, это означает что база опубилкована и работает.

Откроем базу OpenIDClient под административными правами, выполним публикацию базы на веб-сервере. Укажем:
Имя базы = OpenIDClient, 
Публиковать тонкий клиент и веб-клиент = Истина,
На закладке OpenID: Использовать OpenID аутентификацию= Истина
Адрес OpenID-провайдера: https://budnikasus/OpenIDServer/e1cib/oid2op (здесь /e1cib/oid2op - жестко заданное в 1С окончание адреса провайдера, оно одинаково для всех OpenID серверов на 1С).

База будет опубликована по адресу http://BudnikAsus/OpenIDClient

 

Публикация на веб-сервере Клиента ОпенИД

 

После публикации базы если зайти в IIS можно войти в веб-клиент базы, это означает что база опубликована и работает. При входе в каждую базу мы видим окно аутентификации, куда нужно вводить логин-пароль. Базы опубликованы по незащищенному протоколу HTTP.

2. Создадим сертификат. Для того, чтобы работала OpenID аутентификация базы должны работать ТОЛЬКО по протоколу HTTPS, для этого необходимо получить сертификат шифрования. Для работы в интернет нужно получить сертификат, привязанный к имени вашего сайта от стороннего провайдера. Для работы в рамках одной сети или в рамках одной организации можно сделать самоподписанный сертификат. (Т.е. корневой сертификат можно сделать общий один на всех клиентов, которому все будут доверять). Так как мы рассматриваем самый простой случай, будем выпускать самоподписанный сертификат.

Сертификат делаем средствами IIS сервера.

 

Формирование самоподписанного сертификата средствами IIS

 

 

Формирование самозаверенного сертификата средствами IIS

 

Создаем привязки, указывающие на то, что наш веб-сервер будет работать по протоколу HTTPS через порт 443 (стандартный порт протокола HTTPS) с только что созданным сертификатом 

 

Формирование привязок HTTPS

 

 

 

Окно аутентификации OpenID отличается от окна аутентификации 1C:Предприятия:

 

Окно аутентификации OpenID

 

Всё готово!
Теперь если мы заходим в первую базу https://budnikasus/OpenIDClient откроется окно аутентификации OpenID (оно отличается от окна аутентификации базы 1С) и после аутентификации откроется база.
При заходе во вторую базу https://budnikasus/OpenIDClient2 пароль вводить уже не надо.

 

Если для веб-клиента после аутентификации возникает ошибка: "Ошибка HTTP 400.0 — Bad request" - 

Это происходит из-за того, что запрос аутентификации проходит по адресу
https://budnikasus:443/OpenIDServer/e1cib/oid2op?cmd=form а окно OpenID открывается по адресу

https://budnikasus/OpenIDServer/e1cib/oid2op?cmd=form

1С же требует точного совпадения адреса.

Откроем файл "C:\inetpub\wwwroot\OpenIDServer\default.vrd" и добавим свойство <returnto>: 

    <openid>
        <provider>
            <lifetime>604800</lifetime>
            <returnto>.*</returnto>
            <returnto>.*\.1c\.ru</returnto>
        </provider>
    </openid>

или, что то же самое - нужно указать "Разрешенные адреса для переадресации адреса" при публикации или вручную.

Рекомендации по поиску ошибок:

1) Проверяйте работу аутентификации через приложение 1С - тонкий клиент. Оно работает более стабильно, на веб-клиенте существуют некоторые ошибки которых нет в тонком клиенте.
2) Проверить работу OpenID сервера можно постучавшись в браузере по адресу https://SiteName.com/OpenIDServer/e1cib/oid2op. Сервер вернет в этом случае xml - файл с ответом.
3) Обязательно проверяйте, что сертификат SSL работает и базы открываются по протоколу HTTPS.

Примечания на память:

1) Открыть IIS можно, выполнив команду IIS в окне ввода команд Windows. Устанавливается IIS из окна "Программы и компоненты" - "Включение или отключение компонентов Windows"
2) Открыть консоль просмотра сертификатов можно, выполнив команду mmс, далее "файл" - "добавить или удалить оснастку" - "сертификаты".
3) Для создания сертификата SSL у стороннего провайдера нужно указывать, для какого сайта этот сертификат формируется и подтвердить ваши права на этот сайт каким-либо способом.
4) Получить бесплатный сертификат SSL при наличии доменного имени можно тут https://www.sslforfree.com/create
5) Файлы сертификата *.crt  и  *.key можно сконвертировать в *.pfs,  воспользовавшись сервисом https://ssl4less.ru/ssl-tools/convert-certificate.html.
6) Проверить правильность установки сертификата можно через сайт https://ssl4less.com.ua/ssl-tools/check-ssl-certificate.html

См. также

Путь самурая. Ставим локальный Сервер взаимодействия

Сервера Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подробная пошаговая инструкция (как делал я) установки Сервера взаимодействия версия 22.0.26 на Windows Server 2022. Установка собственного объектного хранилище с помощью системы MinIO (https://min.io/). Настройка Сервера взаимодействия для обмена файлами в сообщениях.

1 стартмани

07.04.2023    12622    VPanin56    40    

72

Публикатор 1С. Как публиковать базы с комфортом

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

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

20.03.2023    6718    72    Segate    4    

26

Midnight Commander, установленный с Entware, не выполняет команды и не запускает файлы

Администрирование веб-серверов Linux Бесплатно (free)

Столкнулся с проблемой, установил на роутер Midnigt Commander с репозитория Entware, при попытке выполнения команды программа пишет ошибку "The shell is already running a command". Данная публикация описывает способ решения этой проблемы.

20.03.2023    3403    Eugen-S    2    

3

Публикация 1С на Apache SSL в локальной среде разработки

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В статье описывается установка и настройка веб-сервера Apache для работы с 1С через https.

09.02.2023    5363    lone_mayson    4    

41

Контейнер Docker для размещения публикации базы 1С на разных платформах

Администрирование веб-серверов Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Появилась необходимость развернуть на одном хосте две публикации базы, но не на одной платформе, а на разных. Тут я расскажу, как это сделать для версии 8.3.22.1704.

02.02.2023    3386    Sney_Kice    1    

21

Быстрое конфигурирование серверов с Ansible

Администрирование веб-серверов Сервера Бесплатно (free)

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

26.01.2023    4915    lopatrik    4    

22
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DonAlPatino 176 01.01.20 21:53 Сейчас в теме
Всегда интересовало нельзя ли в качестве OpenID провайдера (или сервера в терминологии данной статьи) использовать не базу 1С, а какое-то стороннее решение?
2. budidich 407 10.01.20 18:08 Сейчас в теме
(1) Теоретически можно. Для этого нужно на стороне стороннего OpenID провайдера настроить формат сообщений, которыми обмениваются клиент и провайдер в формате 1С.
Практически отвечу чуть позже, т.к. как раз так сейчас и делаем, как будет готово - напишу.
3. DonAlPatino 176 10.01.20 21:12 Сейчас в теме
(2) буду очень благодарен
4. maslyann 13 28.01.20 15:35 Сейчас в теме
(2) Очень жду вашего сообщения
5. budidich 407 29.01.20 15:30 Сейчас в теме
(4) В общем, сделали. Очень долго возился программист фронт офиса. Я ему сделал пример авторизации 1С-сервер-1С клиент, он изучал и настраивал запросы между клиентом и сервером на php. Говорит, в документации всего не было.
denwer7; Wolf; +2 Ответить
6. Sander80 82 25.02.20 00:41 Сейчас в теме
(5) Не поделитесь? За стартмани такое точно не жалко купить будет.
7. kolya_tlt 86 25.02.20 14:37 Сейчас в теме
(5) +1
интересует настройка именно в качестве базы не 1С
11. biruk 7 18.03.20 14:40 Сейчас в теме
(5)Роман, если выложите решение - то действительно не жалко стартмани за это.
14. Wolf 29.04.20 02:40 Сейчас в теме
(5)Очень интересно решение
8. dolar2 27.02.20 10:16 Сейчас в теме
(1) можно и даже нужно. Мы у себя настроили авторизацию через гугл акаунт. В компании корпоративная почта работает на Gsuite.
Вход в базу значительно упростился и нет проблем с "забыл пароль", "а какой у меня логин"
9. DonAlPatino 176 27.02.20 15:06 Сейчас в теме
(8) А статью как все это сконфигурить не сделаете?
10. dolar2 27.02.20 16:58 Сейчас в теме
(9) Была мысль, постараюсь
maxim_ataev; +1 Ответить
12. user676842_pavelprk 31.03.20 04:42 Сейчас в теме
Может кто знает, как избавиться от "дырки", когда в окне авторизации OpenID нажать "Отмена", тебя перекидывает на стандартное окно авторизации той базы, в которую изначально пытаешься зайти, естественно со списком выбора пользователей, что не хорошо.
denwer7; Wolf; Ja_V; +3 Ответить
13. Ja_V 17.04.20 11:19 Сейчас в теме
(12)Аналогичная проблема.
15. budidich 407 09.05.20 19:37 Сейчас в теме
(12) Да, проблема такая есть. Я её не решал - мне такую задачу не ставили.
Предполагаю, что можно поискать решение в настройках параметра <provider><returnto> в файле default.vrd.
Еще можно попробовать:
-В базе админам убрать доступ через веб-клиент.
-В настройках веб-сервера ОпенИД клиента запретить доступ без аутентификации.
Но повторяю, я такую проблему не решал.
16. Tlrd 09.11.20 13:51 Сейчас в теме
Настраиваю мобильный клиент через конфигурацию "Сборщик приложений для мобильных устройств" (для аутентификации через OpenID)
Есть рабочая база, база провайдера, всё на IIS.
Подскажите, при настойки сборки, что нужно указать во вкладке "Мобильный клиент", поле "Адрес начальной страницы" : непосредственно адрес рабочей базы ? Нужно вшивать созданный на веб-сервер сертификат в моб.клиент?
Запускаю моб. клиент на планшете, андройд- пустой список баз, ошибок нет. Не пойму как действовать дальше.
17. budidich 407 09.11.20 15:42 Сейчас в теме
(16) Я, честно говоря, не знаю, такую конфигурацию и не знаю, что за вкладка "Мобильный клиент".
Базы должны запускаться как минимум через браузер по адресу вида "http://BudnikAsus/BaseName".
Вероятно, такой же адрес нужно указывать в настройках.
По поводу сертификата - он должен быть как минимум на сервере для базы OpenIDServer.
18. user1284402 19.02.21 07:28 Сейчас в теме
Добрый день! Интересует такой вопрос есть два портала, один битриксе другой yii2 и пользователю приходится между ними переходить. Вот и возникла мысль об авторизации через openID, но тут вопрос можно ли сделать провайдером базу 1С для двух сайтов?
19. budidich 407 19.02.21 10:40 Сейчас в теме
(18) OpenID от 1С имеет какие-то свои особенности, поэтому авторизацию через 1С без допиливания напильником сделать не получится.
Без программиста сайта не обойтись. Но в принципе, конечно можно.
Мы поднимали openID сервер 1С, показывали программисту сайта как работает авторизация в 1С и он что-то там дорабатывал на сайте, чтобы заработало.
20. Drovasek 23.04.21 11:46 Сейчас в теме
Всем здрасти.
Интересует практический опыт, в развертывании OpenID.
Развернул как автор, все работает, и авторизация проходит, проблем нет.
При попытке сделать рабочий вариант (3Сервер (База данных, 1С, WEB)), начинаются проблемы и не совсем пойму куда копать.
При попытке авторизоваться через OpenID (при условии ввода верного пароля) возникает ошибка "Ошибка подключения к OpenID провайдеру HTTPS://site-name.domain-name/userdb/e1cib/oid2op" .
При вводе не верного пароля, возникает соответствующая ошибка "Ошибка OpenID аутентификация пользователя (Тонкий клиент)"
При этом ошибок на WEB сервере не возникает (Все ответы сервера 200).
Сервера пробовал оба. IIS и Apache
В ТЖ, появляться следующие записи «»
Прикрепленные файлы:
LogТЖ.txt
21. itcapital 09.02.22 13:02 Сейчас в теме
Коллеги, всех категорически приветствую. Столкнулся с проблемой, в том числе настраивая по этой статье. Суть следующая:
OpenID-провайдер - простая база с конфой БСП. На IIS опубликована как провайдер OpenID, разрешение доступа с любых адресов прописано в свойствах публикации на вкладке OpenID по методичке ИТС. Клиентская база опубликована на том же веб-сервере с чек-боксом подключения к OpenID-провайдеру. Адрес провайдера по ИТС прописан правильно. vrd-файлы в каталогах публикации на IIS проверены и абсолютно корректны с точки зрения ИТС. Файл oid2op при открытии адреса (https://<corpdomain.ru>/<public_openiddbname>/e1cib/oid2op) в браузере скачивается на компьютер. С сертификатами и https всё в порядке (на веб-сервере используются сертификаты letsencrypt, в браузере видно, что подключение безопасно, никаких ошибок нет). Без OpenID пользователи прекрасно работают без проблем и в тонком клиенте и через браузер в веб-клиенте (неважно - с анонимной авторизацией на веб-сервере по логину и паролю, с базовой авторизацией по доменной учетке). ТП везде - 8.3.20.1674. Пользователь User для эксперимента прописан в базе OpenID-провайдера с паролем, в клиентской базе добавлен пользователь с тем же именем, стоит чек-бокс OpenID авторизации, настроены права доступа.
Проблема: при обращении к клиентской базе окно OpenID-авторизации появляется (тонкий клиент, веб-клиент). При вводе заведомо неправильного пароля появляется нормальная ошибка "ошибка OpenID аутентификации пользователя", но если пароль ввести правильно, то в тонком клиенте появляется очень похожая внешне ошибка, но с формулировкой "ошибка OpenID аутентификации" (без пользователя), а в веб-клиенте сразу перекидывает на окно авторизации самой 1С без автоматического входа в базу. Задавал пользователю одинаковые пароли в обеих базах (провайдер и клиентская), ставил в обеих базах одинаковые чек-боксы авторизации, устанавливал одинаковые права доступа - везде симптоматика не меняется. Куда копать - не понимаю.
22. itcapital 09.05.23 01:22 Сейчас в теме
(21) Спустя чуть больше года решил повторить всю ту же процедуру, но уже на платформе 8.3.22.1923 - всё завелось с первого раза без каких-либо проблем, все работает. В чем был прикол - так и не понимаю. Остался такой же вопрос, как и у (12) - хотелось бы закрыть "дырку", которая перебрасывает на окно ввода авторизационных данных конкретной базы, если нажать кнопку "Отмена" в окне OpenID аутентификации. Так никто и не заморачивался с этим вопросом?
23. alwiz3 07.08.23 15:24 Сейчас в теме
А в чем проблема закрыть всем пользователям вход под 1С учетками в клиентской базе?
24. itcapital 08.08.23 14:51 Сейчас в теме
(23) Проблемы нет. Так и сделано. Но пользователи, привыкшие вводить логин и пароль вручную в окне OpenID-авторизации, упорно пытаются ввести те же данные и в окне авторизации 1С, когда не видят списка пользователей, но при этом провафлили ввод данных в первом диалоговом окне и нажали, например, Esc...
25. olezhe 21 27.12.23 22:59 Сейчас в теме
(24) У меня такой же вопрос.
Автору темы – благодарность. Миру – мир.
Оставьте свое сообщение