Простой пример работы с аутентификацией 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

См. также

Администрирование веб-серверов Сервера Системный администратор Программист Абонемент ($m)

WEB приложение для управления сеансами сервера 1С, имеет адаптивный web интерфейс. Возможности: удаление сеансов; завершение rphost процессов; запуск службы 1С сервера (если остановлена). Используется авторизация BasicAuth с защитой от брутфорса. Поддерживает работу по http https протоколам.

1 стартмани

08.11.2024    389    6    gortrex    2    

3

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

Ошибка 1С веб-сервис IIS. Ошибка доступа к файлу...183(0x000000B7) Невозможно создать файл, так как он уже существует.

27.09.2024    637    California_Dreaming    0    

3

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

В материале описан порядок действий по настройке Apache для работы по защищенному протоколу HTTPS c 1С на операционной системе РедОС с выпуском сертификата SSL.

09.05.2024    2334    artemusII    1    

9

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

Инструкция, как опубликовать веб-сервис с помощью OSPanel.

06.05.2024    1640    lostcay    0    

5

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

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

25.04.2024    3138    artemusII    8    

18

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    1384    1    0    

9

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

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

1 стартмани

07.04.2023    20286    VPanin56    53    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DonAlPatino 178 01.01.20 21:53 Сейчас в теме
Всегда интересовало нельзя ли в качестве OpenID провайдера (или сервера в терминологии данной статьи) использовать не базу 1С, а какое-то стороннее решение?
2. budidich 418 10.01.20 18:08 Сейчас в теме
(1) Теоретически можно. Для этого нужно на стороне стороннего OpenID провайдера настроить формат сообщений, которыми обмениваются клиент и провайдер в формате 1С.
Практически отвечу чуть позже, т.к. как раз так сейчас и делаем, как будет готово - напишу.
3. DonAlPatino 178 10.01.20 21:12 Сейчас в теме
(2) буду очень благодарен
4. maslyann 83 28.01.20 15:35 Сейчас в теме
(2) Очень жду вашего сообщения
5. budidich 418 29.01.20 15:30 Сейчас в теме
(4) В общем, сделали. Очень долго возился программист фронт офиса. Я ему сделал пример авторизации 1С-сервер-1С клиент, он изучал и настраивал запросы между клиентом и сервером на php. Говорит, в документации всего не было.
denwer7; Wolf; +2 Ответить
6. Sander80 100 25.02.20 00:41 Сейчас в теме
(5) Не поделитесь? За стартмани такое точно не жалко купить будет.
7. kolya_tlt 88 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 178 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 418 09.05.20 19:37 Сейчас в теме
(12) Да, проблема такая есть. Я её не решал - мне такую задачу не ставили.
Предполагаю, что можно поискать решение в настройках параметра <provider><returnto> в файле default.vrd.
Еще можно попробовать:
-В базе админам убрать доступ через веб-клиент.
-В настройках веб-сервера ОпенИД клиента запретить доступ без аутентификации.
Но повторяю, я такую проблему не решал.
16. Tlrd 09.11.20 13:51 Сейчас в теме
Настраиваю мобильный клиент через конфигурацию "Сборщик приложений для мобильных устройств" (для аутентификации через OpenID)
Есть рабочая база, база провайдера, всё на IIS.
Подскажите, при настойки сборки, что нужно указать во вкладке "Мобильный клиент", поле "Адрес начальной страницы" : непосредственно адрес рабочей базы ? Нужно вшивать созданный на веб-сервер сертификат в моб.клиент?
Запускаю моб. клиент на планшете, андройд- пустой список баз, ошибок нет. Не пойму как действовать дальше.
17. budidich 418 09.11.20 15:42 Сейчас в теме
(16) Я, честно говоря, не знаю, такую конфигурацию и не знаю, что за вкладка "Мобильный клиент".
Базы должны запускаться как минимум через браузер по адресу вида "http://BudnikAsus/BaseName".
Вероятно, такой же адрес нужно указывать в настройках.
По поводу сертификата - он должен быть как минимум на сервере для базы OpenIDServer.
18. user1284402 19.02.21 07:28 Сейчас в теме
Добрый день! Интересует такой вопрос есть два портала, один битриксе другой yii2 и пользователю приходится между ними переходить. Вот и возникла мысль об авторизации через openID, но тут вопрос можно ли сделать провайдером базу 1С для двух сайтов?
19. budidich 418 19.02.21 10:40 Сейчас в теме
(18) OpenID от 1С имеет какие-то свои особенности, поэтому авторизацию через 1С без допиливания напильником сделать не получится.
Без программиста сайта не обойтись. Но в принципе, конечно можно.
Мы поднимали openID сервер 1С, показывали программисту сайта как работает авторизация в 1С и он что-то там дорабатывал на сайте, чтобы заработало.
20. Bikunov 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) У меня такой же вопрос.
Автору темы – благодарность. Миру – мир.
Оставьте свое сообщение