При разработке собственных HTTP-сервисов на платформе 1С:Предприятие разработчики часто сталкиваются с ошибкой доступа 403, которая сопровождается сообщением: «Недостаточно прав для использования ресурса с данным HTTP методом». Эта ошибка говорит о том, что веб-сервер успешно принял запрос, но платформа 1С ограничила выполнение операции из-за проблем с идентификацией пользователя или отсутствия необходимых полномочий.
В этой статье мы подробно разберем, как диагностировать и устранить эту проблему, опираясь на лучшие практики администрирования 1С — для этого есть сбор и анализ HTTP-запросов и ответов.
Первое, что мы рекомендуем сделать при возникновении подобных ошибок — не спешить менять права доступа всем пользователям подряд, а заглянуть в Журнал регистрации. Как показывает практика, в 90% случаев причина кроется не в отсутствии прав у администратора, а в том, что запрос выполняется под учетной записью, которая не была вами явно настроена.
Проанализируем ситуацию:
Вы можете обнаружить, что в поле «Пользователь» указано не то имя, которое вы ожидали увидеть. Часто система авторизует запрос под пользователем Администратор, а иногда под системным пользователем, если настройки публикации заданы некорректно. Именно несоответствие пользователя, под которым происходит обращение, и того, для кого настроены права, вызывает отказ в доступе.
Если вы определили, что авторизация проходит некорректно, необходимо проверить файл default.vrd. Этот файл находится в папке публикации вашего веб-сервиса на сервере (например, C:\inetpub\wwwroot\MyService\default.vrd). Именно в нем задаются правила того, под каким пользователем 1С будет «видеть» внешние запросы.
Разберем структуру файла. Если в нем не прописан пользователь, система может пытаться использовать анонимную аутентификацию, что часто приводит к ошибкам. Убедитесь, что внутри тега point корректно указаны параметры:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyService"
ib="File="C:\Base";">
<httpServices>
<service name="MyService" rootUrl="my" enable="true"/>
</httpServices>
<standardOData enable="false"/>
</point>
Если вы используете специфического пользователя для веб-сервиса, вы можете явно указать его параметры авторизации в файле публикации, либо настроить Basic-аутентификацию на стороне веб-сервера (IIS или Apache). Убедитесь, что пользователь, под которым осуществляется вход, существует в списке пользователей информационной базы 1С и ему назначена роль с правами на использование HTTP-сервисов — для этого подойдёт универсальная настройка прав доступа и ролей.
Даже если пользователь правильно идентифицирован, он должен обладать правами на выполнение методов HTTP. В конфигураторе перейдите в свойства роли, которая назначена вашему пользователю, и проверьте следующие пункты:
GET, POST).Помните, что наличие «Полных прав» не всегда гарантирует доступ к веб-сервису, если в конфигурации установлены специфические ограничения доступа (RLS) или если роль не была обновлена после добавления нового сервиса. Для этой задачи есть автоматический подбор ролей и профилей доступа.
Работа с HTTP-сервисами требует внимательности к настройкам веб-сервера и платформы. Основной совет: если вы столкнулись с ошибкой «Недостаточно прав», действуйте по алгоритму:
default.vrd на наличие некорректных настроек авторизации.HTTP-сервисы — для этого есть сравнение и анализ прав доступа и RLS.Если после внесения изменений ошибка сохраняется, выполните очистку кэша сервера и перезапустите пул приложений (в случае использования IIS), так как настройки публикации могли закэшироваться.