- Настройка аутентификации Windows при расположении веб-сервера IIS и рабочих серверов на разных машинах
- Описание проблемы
- Решение проблемы
- Расположение веб-сервера IIS и рабочих серверов 1С на разных машинах
- Виды аутентификации
- 6.2.8.1. Общая информация
- 6.2.8.2. Аутентификация средствами системы «1С:Предприятие»
- 6.2.8.3. Аутентификация операционной системы
- 6.2.8.4. Аутентификация с помощью OpenID
- 6.2.8.5. Аутентификация с помощью OpenID Connect
Настройка аутентификации Windows при расположении веб-сервера IIS и рабочих серверов на разных машинах
Описание проблемы
Не работает аутентификация операционной системы (windows) через IIS при использовании тонкого клиента или веб-клиента.
С точки зрения пользователей, будет видно окно с запросом логина и пароля.
Проблема может заключаться в том, что методы операционной системы в силу различных причин возвращают описание текущего пользователя сеанса в таком представлении, которое не совпадает ни с одним пользователем в списке пользователей информационной базы 1С
Решение проблемы
На сервере 1С включить технологический журнал, используя следующую настройку:
Воспроизвести ситуацию с неудачной аутентификацией операционной системы. Авторизоваться под пользователем операционной системы, указанным в свойствах пользователя 1С.
Открыть технологический журнал рабочего процесса и найти событие EXCP со следующим описанием: «Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя»
Обратите внимание на предшествующее ему событие CONN и значение свойства DstUserName2 — именно в таком виде пользователь должен быть указан в свойствах пользователя информационной базы.
04:45.940011-0,CONN,2,process=rphost,t:clientID=60,Txt=Srvr: SrcUserName1: svc-1c@DOMAIN701.COM
04:45.940012-0,CONN,2,process=rphost,t:clientID=60,Txt=Srvr: DstUserName1: testuser2@DOMAIN701.COM(DOMAIN701.COM\testuser2)
04:45.971001-0,CONN,2,process=rphost,t:clientID=60,Txt=Srvr: DstUserName2: DOMAIN701\testuser2(DOMAIN701\testuser2)
04:46.205021-0,EXCP,2,process=rphost,p:processName=trade,t:clientID=60,t:applicationName=WebServerExtension,t:computerName=webserver,t:connectID=19,Exception=a01f465c-ed70-442e-ada5-847668d7a41c,Descr=’src\VResourceInfoBaseServerImpl.cpp(991):
a01f465c-ed70-442e-ada5-847668d7a41c: Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя’
Заменить значение свойства «Пользователь» пользователя информационной базы согласно следующему формату «\\» + [Имя пользователя из свойства DstUserName2 без скобок].
Проверить работоспособность аутентификации средствами операционной системы, войдя в информационную базу, используя веб-клиент.
Расположение веб-сервера IIS и рабочих серверов 1С на разных машинах
В некоторых случаях, несмотря на корректно указанного пользователя операционной системы в пользователе информационной базы, при попытке входа в опубликованную базу через браузер аутентификация операционной системы не проходит. Такая ситуация может возникать, если веб-сервер IIS и сервер 1с находятся на разных машинах. В таком случае в технологическом журнале рабочего процесса можно наблюдать следующую картину:
56:39.487001-0,CONN,2,process=rphost,p:processName=accounting,t:clientID=39,t:applicationName=WebServerExtension,t:computerName=webserver,t:connectID=16,Txt=Srvr: SrcUserName1: winserver1c$@DOMAIN701.COM
56:39.487002-0,CONN,2,process=rphost,p:processName=accounting,t:clientID=39,t:applicationName=WebServerExtension,t:computerName=webserver,t:connectID=16,Txt=Srvr: DstUserName1: testuser2@DOMAIN701.COM(DOMAIN701.COM\testuser2)
56:39.596004-0,CONN,2,process=rphost,p:processName=accounting,t:clientID=39,t:applicationName=WebServerExtension,t:computerName=webserver,t:connectID=16,Txt=Srvr: DstUserName2: NT AUTHORITY\ANONYMOUS LOGON(NT AUTHORITY\ANONYMOUS LOGON )
56:39.659003-0,EXCP,2,process=rphost,p:processName=accounting,t:clientID=39,t:applicationName=WebServerExtension,t:computerName=webserver,t:connectID=16,Exception=a01f465c-ed70-442e-ada5-847668d7a41c,Descr=’src\VResourceInfoBaseServerImpl.cpp(991):
a01f465c-ed70-442e-ada5-847668d7a41c: Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя’
При возникновении такой ситуации необходимо проверить следующие настройки:
1) Убедиться, что процессы сервера 1С запущены от имени доменной учетной записи, входящей в группу Domain Users.
2) Убедиться, что веб-сервер IIS настроен корректно.
В публикации информационной базы найти настройки аутентификации
В настройках аутентификации отключить анонимную аутентификацию и включить Windows-аутентификацию. В Windows-аутентификации упорядочить доступных провайдеров так, чтобы на первом месте был Negotiate.
Пул приложений публикации не нуждается в настройках, в нем можно оставить все по умолчанию.
После изменения настроек перезапустить веб-сервер с помощью команды iisreset в командной строке.
3) Убедиться, что в контроллере домена в свойствах компьютера, на котором запущен веб-сервер, на вкладке делегирование установлено «Доверять компьютеру делегирование любых служб (только Kerberos)»
Для этого откройте оснастку Active Directory Users and Computers (dsa.msc), в компьютерах найдите веб-сервер, перейдите в его свойства и на вкладке Делегирование установить значение «Доверять компьютеру делегирование любых служб (только Kerberos)» и нажать применить.
4) Убедиться, что на клиенте в свойствах обозревателя разрешена встроенная проверка подлинности Windows.
После выполнения всех действий необходимо перезагрузить клиентский компьютер (рабочие серверы перезагрузки не требуют) и убедиться, что аутентификация операционной системы успешно выполняется.
Важно: аутентификации Windows при расположении веб-сервера IIS и рабочих серверов на разных машинах в тонком клиенте работает, начиная с версии 8.3.10.2620 (для тестирования).
Виды аутентификации
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 (элемент ) при публикации информационной базы, выступающей клиентом OpenID-провайдера.
Важно понимать, что «ключевым» полем, по которому обеспечивается сопоставление пользователя информационной базы «1С:Предприятия» и базы пользователей OpenID-провайдера, выступает значение, указанное в свойстве Имя пользователя информационной базы. Другими словами пользователь сможет войти в информационную базу в том случае, если в информационной базе, в свойстве Имя будет указан идентификатор, возвращаемый OpenID-провайдером. Описание возвращаемого идентификатора необходимо получать в документации к используемому OpenID-провайдеру.
Пароль пользователя указывается в рамках OpenID-провайдера. Если в роли OpenID-провайдера выступает информационная база «1С:Предприятие», то пароль задается в информационной базе, выступающей в роли OpenID-провайдера. Пароль, заданный в информационной базе, которая является клиентом OpenID-провайдера, игнорируется при выполнении аутентификации с помощью OpenID. Если используется сторонний OpenID-провайдер, то пароль задается с помощью средств и инструментов этого провайдера. После того, как в хранилище пользователей OpenID-провайдера сменили пароль пользователя, система «1С:Предприятие» будет следовать следующим установкам:
● в текущих сеансах этот пользователь будет считаться аутентифицированным до завершения сеансов;
● при создании нового сеанса будет выполнен запрос пароля даже в том случае, если аутентификационные данные пользователя еще не устарели.
Если необходимо принудительно выполнить аутентификацию с помощью OpenID, то в командной строке запуска клиентского приложения следует указать параметр командной строки /OIDA+ (действует по умолчанию). Соответственно, параметр командной строки /OIDA‑ предназначен для принудительного отключения аутентификации с помощью OpenID.
Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. здесь.
● Дополнительные требования к 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 см. здесь.