Iis управление безопасностью webdav


Содержание

Iis управление безопасностью webdav

облом наступил при попытке заглянуть webdav клиентом в виртуальную директорию.

Дальше начал что-то ещё предпринимать, и добился включения Directory browsing для браузера — что не помогает вебдаву: вирт.директория остаётся для его клиента пустой.

Добавление от 30.06.2020 01:12:

Зы. Также хотелось бы научиться удалять из проводника буквы фантомных вебдав подключений виндового клиента.

Мышкой всё виснет и остаётся на месте,
Remove-PSDrive не выдаёт ошибку, но и не срабатывает,
рестарт эксплорера не помогает.

1. LevT , 30.06.2020 19:25
Короче, 10 IIS настроить я пока вовсе ниасиливаю.

IIS в 2012 R2 сервере — ближе к цели вот по этому гайду http://myworldofit.net/?series=webdav-access-windows…all-on-any-device
(но я настраивал без SSL, и c Windows а не c Basic Authentication)

Application Pool Identity — работает Custom, с админской учёткой
Работает No Managed Code в пуле.
Порт если не дефолтный 80 — то надо вручную допиливать фаерволл на сервере.

И в этом случае виндовый (из 10) клиент всё равно не подключается (system error 5 Access denied) . зато подключается софтина NetDrive.
И видит содержимое виртуальных папок, вау.

Добавление от 30.06.2020 19:54:

Попытка залить этим клиентом 6Гб дистрибутив Exchange обломалась где-то на 2/3
После чего связка клиент-сервер работает нестабильно, обламывается даже на не очень больших файлах (проводник получает восьмизначный IO Device Error)
Даже после последовательных рестартов сайта, IIS и клиента.

2. Musik , 03.07.2020 15:10
LevT
настраивал пруф-концепт
3. LevT , 05.07.2020 19:23
Musik
Видел я эту статью. Вы сами-то это пробовали?
У меня худо-бедно работает NetDrive клиент с 2012 R2 сервером. Десяточный WebClient пишет system error 5 Access denied (если подключаться из net use).

В общем, сейчас ковыряю pydio. Но и там тоже пока не победил бэкенд-аутентификацию к виндовым шарам.

Добавление от 05.07.2020 19:25:

А фантомные подключения сами ушли. после N-ой по счету перезагрузки.

4. vinni , 04.12.2020 20:49
Штатный WebDav-клиент Win 10 «из коробки», подключился по https к папке на Synology, копирую на Synology файл 100+МБ. Проводник рисует график с безумной скоростью 165 МБ/с (это при том, что ноут подключен по 802.11g 130Mbps link speed, а интернет и вовсе 50 Mbps), в итоге график за несколько секунд бодренько упирается в «Выполнено 99%» и висит в таком положении хренову тучу времени. При этом в мониторе самой Synology я вижу поток

0.5-1 MBps. Спрашивается вопрос — чзх?

5. LevT , 04.12.2020 23:45
гм. я тему-то создавал для решения серверной проблемы с IIS
может, для клиента отдельную сделать?

или эту переименовать?

Добавление от 04.12.2020 23:53:

а графики в эксплорере это для тупых юзверей )
кр00тым админом положено рисовать для себя другие графики — из данных etw — или неча на графики кивать )

Installing and Configuring WebDAV on IIS 7 and Later

Introduction

For Internet Information Services (IIS) 7.0 on Windows ServerВ® 2008, Microsoft released a separate, downloadable WebDAV extension module that was completely rewritten. This new WebDAV extension module incorporated many new features that enable Web authors to publish content better than before, and offered Web administrators more security and configuration options. With the release of IIS 7.5, support for a newer WebDAV module was built-in for Microsoft IIS, and Microsoft released an updated version of the downloadable module that had been released for IIS 7.0. This newer version of the WebDAV module provides shared and exclusive locks support to prevent lost updates due to overwrites.

This document walks you through adding WebDAV publishing to an existing Web site by using the new WebDAV user interface and by directly editing the IIS configuration files.

This walkthrough contains a series of steps in which you log on to your Web site using the local loopback address and the local administrator account. When using an administrator account, these steps should only be followed on the server itself using the loopback address or over SSL from a remote server. If you prefer to use a separate user account instead of the administrator account, you must create the appropriate folders and set the correct permissions for that user account when necessary.

This topic discusses using the WebDAV Redirector to connect to your web site. Please see the Using the WebDAV Redirector topic for more information; specifically the «Troubleshooting the WebDAV Redirector» section if you have trouble using the WebDAV redirector.

Prerequisites for Installing and Configuring WebDAV on IIS

The following items are required to complete the procedures in this article:

IIS 7.0 or later must be installed on your server, and the following must be configured:

  • The Default Web Site that is created by the IIS 7.0 installation must still exist.
  • The Internet Information Services Manager must be installed.

At least one authentication method must be installed.

If you choose to use Basic Authentication with the WebDAV redirector, you must connect to your server using HTTPS.

Installing WebDAV on IIS 7.0

Downloading the Right Version for Your Server

There are two separate downloadable packages for the new WebDAV extension module; you need to download the appropriate package for your version of Windows Server 2008:

32-bit Installation Package:

64-bit Installation Package:

Launching the Installation Package

You must run the installation package as an administrator. This can be accomplished by one of the following methods:

    Logging in to your server using the actual account named «Administrator», then browsing to the download pages listed above or double-clicking the download package if you have saved it to your server.

Logging on using an account with administrator privileges and opening a command-prompt by right-clicking the Command Prompt menu item that is located in the Accessories menu for Windows programs and selecting Run as administrator, then typing the appropriate command listed below for your version of Windows to run the installation:

32-bit Windows Versions:

  • msiexec /i webdav_x86_75.msi

64-bit Windows Versions:

Walking Through the Installation Process

  1. When the installation package opens, you see the following screen. If you agree to the license terms, check the «I accept» box, then click Install.
  2. The progress indicator will reflect the status of the installation as it proceeds.
  3. After the installation has completed, click Finish.
  4. The WebDAV extension module is now installed.

Installing WebDAV on IIS 7.5

IIS 7.5 for Windows Server 2008 R2

  1. On the taskbar, click Start, point to Administrative Tools, and then click Server Manager.
  2. In the Server Manager hierarchy pane, expand Roles, and then click Web Server (IIS).
  3. In the Web Server (IIS) pane, scroll to the Role Services section, and then click Add Role Services.

On the Select Role Services page of the Add Role Services Wizard, expand Common HTTP Features, select WebDAV Publishing, and then click Next.

  • On the Confirm Installation Selections page, click Install.
  • On the Results page, click Close.
  • IIS 7.5 for Windows 7

    1. On the taskbar, click Start, and then click Control Panel.
    2. In Control Panel, click Programs and Features, and then click Turn Windows Features on or off.
    3. Expand Internet Information Services, then World Wide Web Services, then Common HTTP Features.

    Select WebDAV Publishing, and then click OK.

    Installing WebDAV on IIS 8.0 and IIS 8.5

    IIS 8.0 on Windows Server 2012 and IIS 8.5 on Windows Server 2012 R2

    1. Click the Server Manager icon on the desktop.
    2. In the Server Manager window, click the Manage menu, and then click Add Roles and Features.
    3. On the Before You Begin page, click Next.
    4. Select the Installation Type and then click Next.
    5. Select the Destination Server, and then click Next.

    On the Select Role Services page, expand Web Server (IIS), expand Web Server, expand Common HTTP Features, and then select WebDAV Publishing. Click Next.

  • On the Select Features page, click Next.
  • Confirm the installation selection, and then click Install.
  • On the Results page, verify that the installation succeeds, and then click Close.
  • On the Confirm Installation Selections page, click Install.
  • On the Results page, click Close.
  • IIS 8.0 for Windows 8 and IIS 8.5 for Windows 8.1

    1. On the taskbar, hold down the Windows key, and then press the X key. Click Control Panel.
    2. In the Control Panel, click Programs and Features, and then click Turn Windows Features on or off.
    3. Expand Internet Information Services, then World Wide Web Services, then Common HTTP Features.

    Select WebDAV Publishing, and then click OK.

    Enabling WebDAV Publishing by Using IIS Manager

    The WebDAV extension module makes it easy to add WebDAV publishing to existing sites by providing you with a wizard that walks you through all of the required steps.

    The following procedure is performed using IIS 8.5 on Windows Server 2012 R2

    Step 1: Enabling WebDAV and Adding an Authoring Rule

    In this first step, we add WebDAV publishing to the Default Web site, and add the required settings to allow the local administrator account to edit the content.

    1. In IIS Manager, in the Connections pane, expand the Sites node in the tree, then click the Default Web Site.
    2. As shown in the image below, double-click the WebDAV Authoring Rules feature.
    3. When the WebDAV Authoring Rules page is displayed, click the Enable WebDAV task in the Actions page.
    4. Once WebDAV has been enabled, click the Add Authoring Rule task in the Actions pane.

    When the Add Authoring Rule dialog appears:

    1. Click All content to specify that the rule applies to all content types.
    2. Choose Specified users and type «administrator» for the user name.
    3. Select Read, Source, and Write for the permissions.

    When you have completed these items, click OK.

    Summary for enabling WebDAV authoring and adding an authoring rule

    Task completed. You have enabled WebDAV authoring on an existing Web site.

    To recap the items that you completed in this step, we added WebDAV publishing to the Default Web Site by:

    • Enabling WebDAV for the Web site.
    • Adding an Authoring Rule for the local administrator account for Read, Source, and Write access.

    As mentioned earlier, your default request filtering settings may block several file types from WebDAV authoring. If you do not modify your request filtering settings, you may see various errors when you try to publish files that are blocked. For example, if you attempt to upload or download a web.config file you will see errors in your WebDAV client. For more information about configuring your request filtering settings, see the How to Configure WebDAV with Request Filtering walkthrough.

    Step 2: Logging in to Your WebDAV Site

    In Step 1 above, you enabled WebDAV publishing for your Default Web Site and added an authoring rule for the local administrator account for Read, Source, and Write access to your Web site’s content. In this step, you log in using your administrator account.

    Ensuring that you have authorization and authentication configured

    1. In IIS Manager, in the Connections pane, expand the Sites node in the tree, then click the Default Web Site.
    2. Double-click the Authentication feature.

    When the Authentication feature opens, make sure that Windows Authentication is enabled. If it is not enabled, select Windows Authentication, and click Enable in the Action menu.

    You can use Basic Authentication with WebDAV, but the WebDAV redirector will only use Basic authentication with SSL connections.

    In IIS Manager, click the Default Web Site under the Sites node in the tree.

  • Double-click the Authorization Rules feature.
  • When the Authorization feature opens, make sure that an Allow rule is defined that includes the administrator account. (For example, the default rule for IIS allowing access to All Users will include the administrator account.)
  • Logging in to your WebDAV site using your administrator account

    Logging into your WebDAV site requires the WebDAV Redirector. The WebDAV Redirector is used to publish content to an existing Web site that has the WebDAV module installed. You must use Server Manager to install the Desktop Experience feature before you can use the WebDAV redirector. For more information, see Using the WebDAV Redirector.

      On your WebDAV server, open a command prompt session.

    Type the following command to connect to your WebDAV server:

    net use \* http://localhost/


    You now have a drive mapped to your WebDAV-enabled web site using the local administrator account, and based on the authorization rule that we added in Step 1, you have Read, Write, and Source access to the content folder.

    Summary for logging into your WebDAV site

    To recap the items that you completed in this step:

    • You verified that your Web site had sufficient authentication and authorization settings.
    • You logged in to your WebDAV site as the local administrator.

    Enabling WebDAV Publishing by Editing the IIS Configuration Files

    You can also add WebDAV publishing to an existing Web site by editing the IIS configuration files.

    Editing your applicationHost.config file requires full administrative permissions. This is best accomplished using one of two methods:

    • Log in to your computer using the local «administrator» account.
    • If you are logged in using an account with administrative permissions that is not the local «administrator» account, open Notepad using the «Run as Administrator» option.

    The above steps are required because the User Account Control (UAC) security component in Windows Server 2008 and later will prevent access to your applicationHost.config file. For more information about UAC, see User Account Control.

    The following steps walk you through all of the required settings to add WebDAV publishing for the Default Web Site.

      Using a text editor such as Windows Notepad, open your applicationHost.config file, which is located in your %SystemRoot%\System32\inetsrv\config folder by default.

    Scroll to the bottom of your applicationHost.config file and locate the section for your Default Web Site that contains your authentication settings. If this section does not exist, you must add it. This should resemble the following example:

    Your Default Web Site’s settings should now resemble the following example:

  • Save your applicationHost.config file.
  • You should now be able to log in to your WebDAV-enabled site using a WebDAV client using the administrator account, but no other users should be able to access the content using WebDAV.

    Summary for adding WebDAV publishing by editing the IIS configuration file

    In this task, you added WebDAV publishing to your Default Web Site by editing the IIS configuration files. To recap the items that you completed in this task:

    1. You enabled Windows Authentication for the Default Web Site.
    2. You enabled WebDAV for the Default Web Site.
    3. You added a WebDAV authoring rule for the administrator account with Read, Write, and Source access to the Default Web Site.

    Установка и настройка WebDAV (IIS 7.5)

    WebDAV.

    Для начала вкратце что такое WebDAV. Стандарт WebDAV (Web Distributed Authoring and Versioning) — расширение протокола HTTP/1.1. Протокол позволяет работать с файлами на сервере и выполнять обычные действия с ними: чтение, запись, удаление файлов. Используется для совместной работы над удаленными файлами. Говоря по-простому, webdav это web-папка.

    Установка WebDAV на Windows Server 2008 R2.

    Я не буду подробно описывать процесс установки WebDAV, я хочу . постинсталляционной настройки

    Включаем WebDAV для сайта IIS.

    Можно сказать на этом установка и настройка по умолчанию выполнена.

    Возможные проблемы и ошибки WebDAV.

    • Проверка работоспособности WebDAV на localhost (Server 2008 R2).

    При подключении диска на localhost возникает ошибка: Error code: 0x80070043 (The network name cannot be found). Можно через cmd: net use * http://localhost

    Ошибка возникает из-за того, что по умолчанию, на Windows Server 2008 R2 не установлен клиент WebDAV (служба WebClient). Для установки клиента необходимо установить фичу — Desktop Experience.

    Проверка роботоспособности WebDAV на localhost.

    Permanent link to this article: http://www.blogss.ru/installing-and-configuring-webdav

    2 комментариев

    Border Сообщает:

    01.06.2015 на 15:33 (UTC 6 )

    Спасибо за решение по Error code: 0x80070043 в картинках

    sergey Сообщает:

    22.12.2020 на 14:46 (UTC 6 )

    О ГОСПОДИ! спасибо, потратил 3 дня на решение ошибки

    Для системного администратора

    Удаленный доступ через протокол WebDAV

    Чтобы организовать доступ сотрудников, находящихся за пределами предприятия, к внутренним файл-серверам, лучше всего воспользоваться встроенным протоколом Windows XP и Windows Server 2003, Web Distributed Authoring and Versioning (WebDAV), который обеспечивает безопасный доступ через приложение-посредник. Пример такого доступа — защищенный доступ Outlook 2003 к Exchange Server через HTTP-proxy. Реализовать WebDAV просто, так как протокол инкапсулирован в классическом HTML. Поэтому брандмауэры не являются препятствием для использования протокола, который совместим не только с платформой Windows, но и с другими операционными системами, в частности Mac OS. Для защиты WebDAV достаточно применить HTTP Secure (HTTPS).

    Рассмотрим этапы подготовки удаленного доступа через WebDAV к папке на внутреннем файл-сервере. Основные компоненты — сервер Microsoft Internet Information Services (IIS) 6.0, файл-сервер, офисное сетевое соединение и клиентские компьютеры. Сервер IIS и файл-сервер не обязательно должны размещаться на одном компьютере. Также необходима система Windows 2003, подключенная к внутренней сети и доступная через Internet. Этот сервер называется WebDAV-сервером, так как он будет работать с IIS 6.0 и серверным модулем расширения WebDAV. Не беда, если WebDAV-сервер еще не подключен к Internet; однако его нужно защитить.

    Доступ к серверу WebDAV через Internet

    Способ доступа к серверу WebDAV через Internet зависит от текущего состояния среды и размеров предприятия. Обязательное условие — назначить IP-адрес или имя DNS и номер TCP-порта, с помощью которых удаленные пользователи будут обращаться к серверу WebDAV. Рассмотрим типичные сценарии. На малом предприятии единственное устройство, подключенное к Internet, — типовой широкополосный маршрутизатор/брандмауэр, но это не помешает организовать доступ с использованием WebDAV. Необходим IP-адрес, по которому удаленные пользователи будут обращаться к файл-серверу. Во-первых, следует выяснить, имеется ли у маршрутизатора статический IP-адрес. Если нет, то проще всего получить его у Internet-провайдера. Если статический IP-адрес получить нельзя, можно использовать DDNS. Большинство широкополосных маршрутизаторов совместимы с DDNS. Затем нужно решить проблему TCP-порта. Если для доступа к узлам за маршрутизатором уже применяется HTTPS, можно просто сделать в брандмауэре исключение для передачи входящих соединений в TCP-порт 443 внутреннего сервера, на котором выполняется IIS 6.0 с WebDAV. На данном этапе порт открывать не следует; предварительно необходимо убедиться, что внутренний сервер готов к этому.

    Если IIS-сервер еще не подключен к Internet, можно назначить файл-сервер WebDAV-сервером.

    В более сложной сети, возможно, уже имеется система Windows 2003, подключенная к Internet напрямую или через брандмауэр, как описано выше. Не составит труда задействовать эту систему. Если сервер Windows 2003 уже работает с IIS, например для Microsoft Outlook Web Access (OWA), SharePoint или общедоступного Web-узла, можно создать виртуальный каталог в существующем Web-узле или подготовить новый узел. Различие в том, что при использовании существующего Web-узла для настройки клиентского доступа WebDAV нужно к имеющемуся URL-адресу Internet добавить имя виртуального каталога. Если создан новый узел, то для него может потребоваться новый номер TCP-порта. При доступе к существующему узлу через HTTPS с использованием стандартного HTTPS-порта 443 необходимо выбрать новый порт для клиентского доступа WebDAV. Если существующий узел настроен на использование порта 443, но никто не обращается к нему через HTTPS, можно изменить текущий порт Secure Sockets Layer (SSL). Если использовать в качестве SSL-порта какой-либо порт, кроме 443, то необходимо добавить к URL-адресу номер порта. Например, для домена с именем webdav.ultimatewindowssecurity.com URL-адрес будет https://webdav.ultimatewindowssecurity.com:XXXXX, где XXXXX — номер порта.

    Настройка безопасного WebDAV

    В следующих поэтапных инструкциях предполагается, что IIS и WebDAV устанавливаются на системе, отличной от файл-сервера. В этом случае достаточно установить IIS без активизации Active Server Pages (ASP) и любых других необязательных компонентов. После установки IIS следует открыть оснастку Internet Information Services (IIS6) Manager консоли Microsoft Management Console (MMC) (см. экран 1), развернуть папку Web Service Extensions и активизировать узел WebDAV. Чтобы максимально сузить поверхность атаки на IIS, не следует активизировать другие модули расширения.

    Экран 1. Активизация WebDAV в IIS 6.0

    Затем нужно настроить IIS для приема только проверенных, шифрованных соединений. Из оснастки IIS Manager консоли MMC следует открыть диалоговое окно Default Web Site Properties и выбрать вкладку Directory Security (экран 2). Прежде всего необходим сертификат SSL для сервера. Если в компании запущена служба Microsoft Certificate Services для домена, то запросить сертификат можно с помощью мастера. В противном случае потребуется купить сертификат в общедоступном удостоверяющем центре или создать сертификат с собственной подписью. В комплекте ресурсов Microsoft Windows Internet Information Server Resource Kit есть инструмент для генерации сертификатов с собственной подписью. Если имеется корпоративный удостоверяющий центр, необходимо щелкнуть на кнопке Server Certificate и пройти по операциям мастера Web Server Certificate Wizard. На странице Delayed or Immediate Request нужно выбрать пункт Send the request immediately to an online certification authority и щелкать на кнопке Next до тех пор, пока не появится страница Your Site’s Common Name. На ней требуется ввести имя DNS или IP-адрес для обращения удаленных пользователей к Web-узлу. Если введен IP-адрес и используется DHCP с DDNS, то сертификат при изменении IP-адреса окажется недействительным. Не следует указывать https:// или номер порта. В приведенном выше примере с URL необходимо ввести webdav.ultimatewindowssecurity.com. Нажимая Next, нужно перейти к странице SSL Port и ввести выбранный ранее TCP-порт, а затем щелкать на кнопке Next до появления кнопки Finish. После щелчка на ней сертификат SSL будет установлен. Вернувшись на вкладку Default Web Site Properties Directory Security, следует щелкнуть на кнопке Edit в разделе Secure communications, чтобы вызвать диалоговое окно Secure Communications и установить флажки Require secure channel (SSL) и Require 128-bit encryption.

    Экран 2. Параметры вкладки Directory Security

    На следующем этапе необходимо потребовать, чтобы все пользователи при обращении к серверу проходили проверку подлинности. На вкладке Directory Security следует щелкнуть Edit в разделе Authentication and access control. Сбросив флажок Enable anonymous access (экран 3), нужно установить флажок Basic authentication (password is sent in clear text). Не обязательно выбирать обычную проверку подлинности, если на предприятии имеются только клиенты Windows. Можно не обращать внимания на предупреждение о простом тексте от IIS — шифрование SSL уже активизировано. Стандартный домен следует настроить в соответствии с параметрами домена, в котором размещены учетные записи удаленных пользователей; в результате пользователям не придется добавлять перед своими именами domain name\. Вид диалогового окна Authentication Methods должен быть похож на экран 3.

    Экран 3. Правильно настроенные параметры Home Directory

    Настраиваем IIS на общедоступную папку

    Всякий раз, когда устанавливается новый IIS-сервер, создается виртуальный каталог на существующем Web-узле или новый Web-узел на имеющемся IIS-сервере; необходимо настроить IIS на соответствующую папку файл-сервера, в которую будут направляться запросы от URL-адреса WebDAV. Если создан узел или виртуальный каталог в существующем узле, то IIS предоставляет возможность указать папку, которая содержит информацию для этого каталога или узла. Поскольку используется экземпляр IIS, выделенный для WebDAV, необходимо только связать корневой каталог выбираемого по умолчанию Web-узла с файл-сервером. В диспетчере IIS Manager следует вернуться к Default Web Site Properties и выбрать вкладку Home Directory, затем установить флажок A share located on another computer и ввести в текстовом поле Network directory путь в формате Universal Naming Convention (UNC) для общей папки, к которой предстоит обращаться удаленным пользователям (экран 4).

    Необходимо убедиться, что IIS олицетворяет текущего пользователя перед доступом к файл-серверу. Следует щелкнуть на кнопке Connect As… и установить флажок Always use the authenticated user’s credentials when validating access to the network directory. Чтобы пользователи могли получать, отправлять и просматривать файлы в папке через WebDAV, нужно установить флажки Read, Write и Directory browsing на вкладке Home Directory (экран 4). Эти флажки определяют только операции WebDAV, которые может запросить пользователь. Файл-сервер применяет разрешения NTFS для доступа к файлам так, как будто пользователь подключен локально. Остальные параметры на вкладке Home Directory активизировать не нужно, а параметру Execute permissions следует присвоить значение, обеспечивающее максимально надежную защиту.

    Экран 4. Правильно настроенные методы Authentication Methods

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

    Активизация пользователей

    Теперь остается лишь активизировать удаленных пользователей. Для этого нужно создать ярлык Add Network Place для пользователей, чтобы они могли получить доступ в My Network Places на своих клиентских компьютерах. Затем каждому пользователю необходимо обратиться в My Network Places, дважды щелкнуть на ярлыке Add Network Place и ввести URL-адрес узла WebDAV. При первом обращении к ярлыку в My Network Places программа Windows Explorer запрашивает учетные данные; впоследствии пользователи получают доступ к файл-серверу как к обычной общей папке.

    Проблемы безопасности

    Насколько безопасен этот метод? Удаленный доступ через WebDAV сопоставим по защищенности с VPN-доступом на основе пароля пользователя. Единственное различие — увеличенная площадь атаки WebDAV из-за открытого порта 443. Однако, чтобы воспользоваться HTTP для проникновения в систему, взломщикам требуется успешно пройти проверку подлинности. Чтобы усилить безопасность, можно внести элемент неизвестности, изменив номер HTTPS-порта Web-узла с 443 на более высокий. Следует иметь в виду, что при этом ограничивается доступ удаленных пользователей, находящихся за брандмауэром другой компании со строгими ограничениями для исходящих соединений. Лучший способ еще более надежно защитить любой тип Web-соединений — требовать клиентские сертификаты наряду с аутентификацией с применением пароля. Для получения сертификата удаленным пользователям достаточно пройти по нескольким Web-страницам.

    Возможно ли и как расшарить корень DFS через WebDAV на отдельностоящем IIS-сервере?

    Можно. Нужно замапить корень DFS на IIS и опубликовать его через WebDAV. Да возможно с авторизацией будет костыль в виде — все работают под одной учёткой. Хотя может быть удастся заставить работать прозрачную авторизацию.

    Я ведь правильно понял что вы делаете паблику вебдава с высокой доступностью? если да, то лучше смотреть на реализации rsynch и apache там всё надёжнее. Но это имхо.

    Нет, высокая доступность тут не при чем. DFS у нас — «точка входа», хотелось бы отразить ее в виде webDAV. Да, вариант «все под одним пользователем» вполне работает, но в моем случае это плохо.

    Касательно аутентификации — через NTLM это оказалось сделать невозможно, так как в этом случае я авторизуюсь на сервере, а сервер не можем прокинуть мои авторизационные данные дальше на сервер, подмаплнный через папку DFS.
    Единственный вариант — использование Kerberos-авторизации, но мне это не подходит потому как этот доступ хотелось сделать именно для недоменных клиентов, имеющих учетные записи в AD.

    Пока остановился на решении FTP over SSL через IIS с FileZilla в виде клиента.

    Как создать WebDAV сервер средствами IIS от ОС Windows 10, 8.1, 8, 7, Vista

    Совсем недавно мы рассмотрели две очень интересные темы, связанные с доступом к файлам на компьютере через интернет. Эти статьи доступны по следующим ссылкам: файловый сервер с WEB интерфейсом и FTP-сервер. Статьи получились большие и, на мой взгляд, очень полезные, но этот комплект не полный. Сегодня я расскажу об ещё одном способе обмена файлами, а точнее протоколе WebDAV. Что же это такое?

    WebDAV (англ. Web Distributed Authoring and Versioning) — это протокол защищенного соединения высокого уровня. WevDAV работает поверх HTTP. Этот протокол позволяет осуществлять любые операции с файлами (и их метаданными) на сервере и даже позволяет работать одновременно с несколькими файлами. То есть, установив WebDAV сервер, мы получаем защищенное соединение для работы с нашими файлами на компьютере с любой точки планеты, где есть интернет. Неплохо? Конечно же, это отлично! И, кстати, именно по протоколу WebDAV работают такие проекты как Google Drive, Яндекс.Диск, DropBox и SkyDrive. Это явный пример того, что этот протокол стоит внимания.

    Хватит теории, думаю вы и так уже всё поняли и решили, что вам он нужен. Перейдем к настройке (все операции проводились на Windows 8.1 Final, но применимы так же к Windows 7 и Windows 8):

    1) Первое что нам нужно — это включить недостающие компоненты системы. Для этого идём в «Панель управления» → категория «Программы» → «Программы и компоненты» и жмём кнопку слева «Включение или отключение компонентов Windows»:

    2) Открываем каталог «Службы IIS» и ставим маркеры на каталоги «Службы Интернета» и «Средства управление веб-сайтом».

    Раскрываем «Службы Интернета» и далее совершаем два пункта:
    а) Переходим в каталог «Безопасность» и ставим галочку на все пункты;
    б) Переходим в каталог «Общие функции HTTP» в этом каталоге так же ставим галочки на все компоненты.

    Жмём ОК и ждём, пока Windows включит необходимые нам компоненты.

    Возможно после включения понадобится перезагрузка системы.

    3) Далее нам необходимо создать пользователей и группу для них, которые смогут работать с нашими файлами по протоколу WebDAV. Для этого идём в «Панель управления» → группа «Система и безопасность» → «Администрирование» → «Управление компьютером». В левой части окна выбираем раздел «Локальные пользователи и группы» → «Группы». Чтобы создать группу, нужно кликнуть правой клавишей мыши по центральной части окна и выбрать соответствующий пункт:

    Вводим имя группы и её описание:

    Далее нужно перейти на вкладку «Пользователи» и по аналогии создать нового пользователя. Кликаем правой клавишей по пустому месту и выбираем «Новый пользователь»:

    Указываем имя пользователя, полное имя, вводим пароль, снимаем галочку с «Требовать смены пароля…» и ставим галочки на «Запретить смену пароля пользователем» и «Срок действия пароля не ограничен» и создаем пользователя:

    Далее открываем свойства нового пользователя и переходим на вкладку «Членство в группах». Жмём кнопку «Добавить» → «Дополнительно» → «Поиск» и выбираем группу, которую мы создали несколько минут назад. Жмём ОК.

    4) Теперь нам нужно предоставить новой группе доступ к папкам, доступ к которым будет осуществляться через WebDAV. Для этого открываем свойства нужного каталога и переходим на вкладку «Безопасность», нажимаем кнопку «Изменить»:

    Нажимаем «Добавить» и добавляем группу пользователей, которую мы создавали для WebDAV. Выбираем её и даём в нижней части полный доступ:

    Жмём ОК, для применения изменений.

    5) Теперь переходим к настройке сервера. Для этого идём в «Панель управления» → группа «Сеть и безопасность» → «Администрирование» и открываем «Диспетчер служб IIS» → «Сайты» и выбираем в левой колонке «Default Web Site»:

    В центральной части окна открываем «Правила разработки WebDAV»:

    В открывшемся меню, в правой колонке жмём кнопку «Включить WebDAV»:

    Далее, в том же меню жмём «Добавить правило разработки»:

    В открывшемся окне выбираем «Указанные роли или группы пользователей» и вводим имя группы, которую мы создавали для WebDAV. Ставим все галочки в разделе «Разрешения» и жмём ОК.

    Возвращаемся в окно работы с сайтом и жмём кнопку «Проверка подлинности»:

    Включаем «Проверка подлинности Windows». Для этого нажимаем правой клавишей и выбираем «Включить». Если сервер будет использовать только для WebDAV, можно отключить анонимную проверку.

    Ещё раз возвращаемся в меню работы с сайтом и выбираем пункт «Правила авторизации»:

    В этом окне нам нужно добавить разрешающее правило, нажав кнопку справа. Указываем нашу группу пользователей.

    Настройка сервера почти завершена, осталось за малым: указать папку, доступ к которой будет осуществлять по протоколу WebDAV. Для этого жмём правой клавишей по Default Web Site, выбираем «Управление веб-сайтом» и кликаем по «Дополнительные параметры»:

    В открывшемся окне вводим путь до папки, доступ к которой будет осуществляться через протокол WebDAV и жмём ОК.

    Сервер WebDAV настроен и готов к работе. Если у вас постоянный IP, можно купить доменное имя и привязать его к вашему компьютеру.
    Для удобства использования WebDAV сервера, можно подключить его на компьютере как сетевой диск, это значительно упростит его использование. Так же к вашему вниманию доступны статьт о подключении к серверу с телефона на Android через ES Проводник или X-plore File Manager.

    На этом всё. Надеюсь эта статья оказалась вам полезной, нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа.

    Iis управление безопасностью webdav

    В прошлый раз мы разбирали один из возможных способов размещения шаблонов MS Office – в сети, на разделяемом ресурсе. Это во многих отношениях отличный способ – простой, надежный, не требующий специальных знаний и дополнительного ПО. Однако, требования корпоративных стандартов бывают очень различными и не редко использования протокола CIFS/SMB в корпоративной сети может быть очень ограниченным (я например, сталкивался с блокировкой SMB между филиалами).

    Один из вариантов обхода такой проблемы предложил Андрей Подкин – размещать шаблоны во внешнем хранилище и использовать клиентское ПО с автоматической синхронизацией содержимого этого хранилища. Способ как минимум интересный! Но вновь есть подозрение, что для более-менее крупной компании он разойдется с корпоративной политикой.

    Поэтому сегодня мы рассмотрим другой вариант – распространение шаблонов офиса поверх HTTP/HTTPS, которые, как правило, внутренними политиками не блокируются.

    Как можно использовать HTTP для распространения шаблонов?

    Мне известны как минимум два способа:

    1. Использование протокола WebDAV, реализующего file-styled операции поверх HTTP
    2. Создание каталога шаблонов, так, как описано в статье Deploy custom templates in Office 2010

    Сегодня мы разберем первый вариант (сам протокол WebDAV мы несколько обойдем стороной, но, надеюсь, сможем вернуться к нему в дальнейшем).

    Итак, для того чтобы развернуть решение на базе WebDAV, нам потребуется:

    • Сервер с поддержкой WebDAV. Из стандартного и/или доступного бесплатно ПО с нужным функционалом можно назвать:
      • SharePoint Foundation – для нашей задачи это слишком громоздкий вариант (да и в принципе, если переходить на использование SharePoint, лучше использовать его механизм работы с шаблонами)
      • Расширение WebDav Publishing для IIS (Internet Information Service).
    • Клиентская поддержка. Здесь мы обойдемся встроенным в Windows WebDAV-клиентом.

    Развертывание IIS c поддержкой WebDAV

    Сразу оговорюсь, что рассматривать далее мы будем IIS версии 7.x и старше, а значит ОС от Windows 2008 и старше (конкретно у меня скриншоты будут для Windows 2012 и IIS 8, но разница с младшими версиями не принципиальна).

    • Запускаем от имени администратора (важно!) Server Manager и выбираем пункт Add Roles and Features (Add Roles).

    Вот так он выглядит в Server 2012

    А вот так в 2008 R2:

    • В списке ролей выбираем Web Server (IIS):
    • На шаге выбора сервисов для Web Server Role выбираем 2 пункта: WebDAV Publishing и Windows Authentication
    • Запускаем установку и при необходимости перезагружаемся. В результате, в списке установленных ролей у нас появится IIS:


    Настройка узла WebDAV с шаблонами

    Прежде чем мы пройдём по шагам весь процесс хотелось бы обговорить один важный момент – какой адрес выбрать для размещения сайта с шаблонами?

    По умолчанию, IIS предлагает использовать созданный по умолчанию сайт (Default Web Site), который доступен (если вы ничего не меняли в настройках) по адресу :80″>http:// :80 или просто «>http:// . Для нас это самый простой и подходящий вариант!

    Однако (чисто теоретически – в реальности я не сталкивался с такими проблемами), модуль поддержки WebDAV может начать конфликтовать с другими приложениями, развернутыми на том же сайте. Тогда для распространения шаблонов придется создать отдельный сайт, который, чтобы не конфликтовать с Default Web Site должен иметь хотя бы один отличающийся параметр:

    • Host Name. При использовании собственного имени сайта с шаблонами, вам придется добавить его в список узлов вашего DNS-сервера
    • Port. В этом случае мы рискуем столкнуться с ситуацией, что выбранный нами порт также будет заблокирован политиками компании.

    В общем, у каждого варианта свои особенности. Мы же далее рассмотрим самый первый – размещение на Default Web Site:

    • Запускаем Internet Information Services (IIS) Manager.
    • Выбираем узел Default Web Site и в контекстном меню пункт Add Virtual Directory…
    • Указываем имя виртуальной папки и её физическое расположение (если папки ещё нет, ее можно будет создать прямо из диалога):
    • Возвращаемся к узлу Default Web Site, выбираем настройку WebDAV Authoring Rules и в ней, на панели Actions, пункт Enable WebDAV
    • Затем переходим на узел Templates, выбираем настройку Authentication и в ней запрещаем анонимную аутентификацию и разрешаем Windows аутентификацию
    • Вновь выбираем узел Templates, затем – настройку WebDAV Authoring Rules и в ней, на панели Actions, пункт Add Authoring Rule
    • В открывшемся диалоге заполняем параметры правила:
      • любой контент (All content)
      • для всех пользователей (All users)
      • доступен на чтение (права Read и Source)
    • И наконец последний, но очень важный шаг – выдача прав на физическую папку, где будут лежать шаблоны. На самом деле, в данном конкретном примере этот шаг – лишний, т.к. права на чтение и так есть у доменной группы Users, но мы все равно дадим права группе Everyone

    Осталось выложить в папку MS Office Templates заготовленные нами шаблоны и серверная часть окажется настроенной.

    Настройка WebDAV на клиенте

    Как уже было сказано ранее, для доступа к развернутому ранее WebDAV ресурсу мы будем использовать встроенные возможности Windows. Всю работу выполняют служба WebClient (или Веб-клиент в русской версии) и драйвер MRXDAV.SYS. Это сочетание позволяет получить очень интересный результат:

    все обращения к сетевому ресурсу

    будут заменяться на WebDAV-запросы к узлу

    Наши шаблоны лежат на сервере с именем VM1, порт сайта 80, виртуальная папка называется Templates, а значит строка обращения будет такой

    Этот путь мы укажем в настройках Office, так как делали это в предыдущей статье используя либо прямую правку реестра, либо настройки GPO (увы, по непонятной причине, указать такой путь через UI Office у меня не вышло):

    Обновляем политику (или просто перелогиниваемся) и получаем наш законный результат:

    Ура.

    Неужели все получилось? В принципе, да, хотя имеется ряд потенциальных (и не только потенциальных) проблем… Но о них (и конечно, способах их решения) мы поговорим в следующей части – эта и так получилась очень большой.

    Шаблоны MS Office в корпоративной сети (часть 2). Использование WebDAV

    В прошлый раз мы разбирали один из возможных способов размещения шаблонов MS Office – в сети, на разделяемом ресурсе. Это во многих отношениях отличный способ – простой, надежный, не требующий специальных знаний и дополнительного ПО. Однако, требования корпоративных стандартов бывают очень различными и не редко использования протокола CIFS/SMB в корпоративной сети может быть очень ограниченным (я например, сталкивался с блокировкой SMB между филиалами).

    Один из вариантов обхода такой проблемы предложил Андрей Подкин – размещать шаблоны во внешнем хранилище и использовать клиентское ПО с автоматической синхронизацией содержимого этого хранилища. Способ как минимум интересный! Но вновь есть подозрение, что для более-менее крупной компании он разойдется с корпоративной политикой.

    Поэтому сегодня мы рассмотрим другой вариант – распространение шаблонов офиса поверх HTTP/HTTPS, которые, как правило, внутренними политиками не блокируются.

    Как можно использовать HTTP для распространения шаблонов?

    Мне известны как минимум два способа:

    1. Использование протокола WebDAV, реализующего file-styled операции поверх HTTP

    2. Создание каталога шаблонов, так, как описано в статье Deploy custom templates in Office 2010

    Сегодня мы разберем первый вариант (сам протокол WebDAV мы несколько обойдем стороной, но, надеюсь, сможем вернуться к нему в дальнейшем).

    Итак, для того чтобы развернуть решение на базе WebDAV, нам потребуется:

    • Сервер с поддержкой WebDAV. Из стандартного и/или доступного бесплатно ПО с нужным функционалом можно назвать:
      • SharePoint Foundation – для нашей задачи это слишком громоздкий вариант (да и в принципе, если переходить на использование SharePoint, лучше использовать его механизм работы с шаблонами)
      • Расширение WebDav Publishing для IIS (Internet Information Service).
    • Клиентская поддержка. Здесь мы обойдемся встроенным в Windows WebDAV-клиентом.

    Развертывание IIS c поддержкой WebDAV

    Сразу оговорюсь, что рассматривать далее мы будем IIS версии 7.x и старше, а значит ОС от Windows 2008 и старше (конкретно у меня скриншоты будут для Windows 2012 и IIS 8, но разница с младшими версиями не принципиальна).

    • Запускаем от имени администратора (важно!) Server Manager и выбираем пункт Add Roles and Features (Add Roles).

    Вот так он выглядит в Server 2012

    А вот так в 2008 R2:

    • В списке ролей выбираем Web Server (IIS):
    • На шаге выбора сервисов для Web Server Role выбираем 2 пункта: WebDAV Publishing и Windows Authentication
    • Запускаем установку и при необходимости перезагружаемся. В результате, в списке установленных ролей у нас появится IIS:

    Настройка узла WebDAV с шаблонами

    Прежде чем мы пройдём по шагам весь процесс хотелось бы обговорить один важный момент – какой адрес выбрать для размещения сайта с шаблонами?

    По умолчанию, IIS предлагает использовать созданный по умолчанию сайт (Default Web Site), который доступен (если вы ничего не меняли в настройках) по адресу http:// :80 или просто «>http:// . Для нас это самый простой и подходящий вариант!

    Однако (чисто теоретически – в реальности я не сталкивался с такими проблемами), модуль поддержки WebDAV может начать конфликтовать с другими приложениями, развернутыми на том же сайте. Тогда для распространения шаблонов придется создать отдельный сайт, который, чтобы не конфликтовать с Default Web Site должен иметь хотя бы один отличающийся параметр:

    • Host Name. При использовании собственного имени сайта с шаблонами, вам придется добавить его в список узлов вашего DNS-сервера
    • Port. В этом случае мы рискуем столкнуться с ситуацией, что выбранный нами порт также будет заблокирован политиками компании.

    В общем, у каждого варианта свои особенности. Мы же далее рассмотрим самый первый – размещение на Default Web Site:

    • Запускаем Internet Information Services (IIS) Manager.
    • Выбираем узел Default Web Site и в контекстном меню пункт Add Virtual Directory…
    • Указываем имя виртуальной папки и её физическое расположение (если папки ещё нет, ее можно будет создать прямо из диалога):
    • Возвращаемся к узлу Default Web Site, выбираем настройку WebDAV Authoring Rules и в ней, на панели Actions, пункт Enable WebDAV
    • Затем переходим на узел Templates, выбираем настройку Authentication и в ней запрещаем анонимную аутентификацию и разрешаем Windows аутентификацию
    • Вновь выбираем узел Templates, затем – настройку WebDAV Authoring Rules и в ней, на панели Actions, пункт Add Authoring Rule

    В открывшемся диалоге заполняем параметры правила:

    • любой контент (All content)
    • для всех пользователей (All users)
    • доступен на чтение (права Read и Source)
    • И наконец, последний, но очень важный шаг – выдача прав на физическую папку, где будут лежать шаблоны. На самом деле, в данном конкретном примере этот шаг – лишний, т.к. права на чтение и так есть у доменной группы Users, но мы все равно дадим права группе Everyone

    Осталось выложить в папку MS Office Templates заготовленные нами шаблоны и серверная часть окажется настроенной.

    Настройка WebDAV на клиенте

    Как уже было сказано ранее, для доступа к развернутому ранее WebDAV ресурсу мы будем использовать встроенные возможности Windows. Всю работу выполняют служба WebClient (или Веб-клиент в русской версии) и драйвер MRXDAV.SYS. Это сочетание позволяет получить очень интересный результат:

    все обращения к сетевому ресурсу

    будут заменяться на WebDAV-запросы к узлу

    Наши шаблоны лежат на сервере с именем VM1, порт сайта 80, виртуальная папка называется Templates, а значит строка обращения будет такой

    Этот путь мы укажем в настройках Office, так как делали это в предыдущей статье используя либо прямую правку реестра, либо настройки GPO (увы, по непонятной причине, указать такой путь через UI Office у меня не вышло):

    Обновляем политику (или просто перелогиниваемся) и получаем наш законный результат:

    Ура.

    Неужели все получилось? В принципе, да, хотя имеется ряд потенциальных (и не только потенциальных) проблем… Но о них (и конечно, способах их решения) мы поговорим в следующей части – эта и так получилась очень большой.

    Изучаем WebDav

    Содержание статьи

    Если бы в качестве введения я начал расписывать достоинства облачных хранилищ данных, ты бы подумал, что меня только что разморозили после двадцатилетнего анабиоза или что я серьезно злоупотребляю снотворными :). Поэтому скажу кратко, по-программистски: когда передо мной встала задача сделать программу, которая могла бы без привязки к API конкретного сервиса работать с файлами на множестве хранилищ (речь шла о бэкапе), оказалось, что это не так просто. Обо всех тонкостях и подводных камнях проделанной работы я решил тебе рассказать в этой статье.

    WebDAV

    WebDAV (Web Distributed Authoring and Versioning) — это протокол для передачи данных и работы с ними, построенный поверх HTTP 1.1. Здесь следует заметить, что передача может быть как защищенной, так и незащищенной. В самом протоколе защищенность отсутствует, но она может быть добавлена через реализацию аутентификации на веб-сервере и шифрование посредством SSL, следовательно, в таком случае будет использоваться не HTTP, а HTTPS.

    Изначально DAV разрабатывался для совместного создания и редактирования веб-страниц, но в процессе использования он нашел применение в качестве сетевой распределенной файловой системы, эффективной для работы в высоконагруженной среде и поддерживающей неустойчивое соединение. Таким образом, DAV подходит для управления файлами на веб-серверах, иными словами, реализации облачных хранилищ информации, где и был применен. С его помощью можно выполнять основные операции над файлами, содержащимися на сервере, проводить расширенные операции, как то: блокировка, получение метаданных, контроль версий и другие. Этот протокол стал заменой для старого доброго FTP, чье время подошло к концу.

    WebDAV предоставляет семь команд:

    • PROPFIND — получение свойств объекта на сервере в формате XML;
    • PROPPATCH — изменение свойств объекта;
    • MKCOL — создать папку на сервере;
    • COPY — копирование на стороне сервера;
    • MOVE — перемещение на стороне сервера;
    • LOCK — заблокировать объект;
    • UNLOCK — снять блокировку с объекта.

    Таким образом, WebDAV позволяет изменять свойства хранящихся на сервере объектов, выполнять поиск с учетом свойств, блокировать объект (в нашем случае — файл) для организации возможности его редактирования только одним пользователем в распределенной среде, в которой доступ могут иметь много юзеров, управлять версиями файлов (посредством унаследованных команд check -in, -out), а также производить расширенный контроль доступа к файлам на основе списков.

    Кроме того, WebDAV поддерживает унаследованные команды: GET — для скачивания файла, PUT — для заливки на сервер и DELETE — для удаления объекта. Мы не будем рассматривать все команды; в моем случае для реализации функционала утилиты мне понадобилось лишь четыре.

    Ныне в разработке протокола участвуют Microsoft, Mozilla, Novell, IBM и другие. Поэтому не стоит удивляться тому, что поддержка WebDAV присутствует во многих продуктах Microsoft (в том числе Internet Explorer, проводнике, веб-сервере IIS и других), браузере Mozilla Firefox, продуктах фирмы Novell, IBM. Дополнительно, с помощью установки плагинов «подружить» с протоколом можно Total Commander и FAR.

    Как уже было упомянуто, в Windows удаленное хранилище WebDAV можно подключить в проводник как дополнительный диск. Подобным образом можно поступить в OS X, организовав подключение к WebDAV-серверу как дополнительную директорию в обозревателе Finder.

    Возможные решения

    Передо мной стояла задача подключиться и организовать работу с данными на двух файловых хранилищах: Яндекс.Диск и Dropbox. Оба эти сервиса поддерживают работу по протоколу WebDAV. Регистрируя почту на Яндексе, ты автоматом получаешь доступ к 10 Гб облачного хранилища, к которому можно подключиться не только через стандартный клиент, но и с помощью сторонней тулзы (например, своей программы) посредством протокола WebDAV. При регистрации на Dropbox ты получаешь 5 Гб дискового пространства, которое можно использовать через стандартный клиент. Однако, чтобы получить доступ к хранилищу по WebDAV, надо пройти дополнительную регистрацию. В итоге, как выяснилось, этот доступ не бесплатный, тем не менее после регистрации дается свободный доступ на две недели. Размеры хранилищ можно увеличивать: или через доплату, или с помощью участия в разных акциях, проводимых сервисами, например находить баги и сообщать о них разработчикам.

    Когда мне понадобилось написать программу для работы по WebDAV-протоколу, я первым делом заглянул в Win32 API, чтобы посмотреть, есть ли там функции для этого, подобно имеющимся для работы с FTP. Забегая вперед, отмечу, что сроки у меня стояли сжатые, поэтому использовать функции уровня API я не собирался. Как и следовало ожидать, в Win32 API, начиная с версии для Windows Vista, входит WebDAV API. В него входит одно перечисление, три структуры и набор функций. Я подумал, что это хороший знак, поскольку на основе стандартного API непременно имеются более высокоуровневые решения и мне не придется засиживаться с функциями API-интерфейса.

    Тут под руку попалась Delphi XE3, и я решил проверить, какие инструменты для работы с протоколом WebDAV есть у нее. Оказалось, что в ней (на вкладке Indy Clients палитры компонентов) есть компонент IdWebDav. Я уже подумал, что на этом исследования закончились… Но обнаружилось, что этот компонент ни в какую не коннектится к Яндексу (Яндекс.Диск был для меня более приоритетным сервисом, поэтому все тесты я в первую очередь проводил на нем).

    Затем я решил воспользоваться старой, но проверенной временем сетевой библиотекой Synapse для Delphi. К тому же в Рунете есть прекрасный сайт, содержащий несколько статей, посвященных этой либе, www.webdelphi.ru. На первых порах работа двигалась хорошо, и мне удалось реализовать несколько функций протокола: создание папки, скачивание файлов, получение свойств объектов. Но самую главную функцию — загрузку файлов на сервер с локального компа — реализовать так и не удалось. Стало грустно: в интернете об этом протоколе толковой информации нет. Bing нашел несколько платных наборов компонентов для работы с сетью, одной из которых я ради интереса решил воспользоваться, чтобы выяснить, реально ли загрузить файл на Яндекс.Диск. Этой либой оказалась Clever Internet Suite. Создав компонент класса clWebDav, одной строчкой кода удалось закинуть файл на сервер:

    где stream — файловый поток, предварительно созданный для чтения.

    Прекрасно, но отталкивает стоимость этой либы: более 500 у. е., что не есть гуд. Если ты захочешь воспользоваться этим способом, то обрати внимание на версию библиотеки: к Яндексу можно подключиться только с помощью версии 7.0 и выше, если воспользоваться распространенной на просторах Сети версией 6.0, то загрузка данных на сервер не удастся. На этом «играться» с Delphi мне надоело, и я решил обратиться к dotNET и C#.

    Подключаемся к Yandex.disk + создаем коллекцию

    Поскольку WebDAV работает поверх HTTP/S, я решил воспользоваться классами HttpWebRequest и HttpWebResponse, которые входят в .NET Framework начиная с версии 2.0. При этом мы будем использовать .NET Framework 4.0 — почему, скажу ниже. Коротко говоря, первый из перечисленных классов представляет HTTP-запрос, второй — HTTP-ответ. Наша задача — правильно сформировать запрос таким образом, чтобы его мог понять WebDAV-сервер. Чтобы узнать, как правильно оформлять запросы WebDAV-серверу, обратимся к документации Яндекса по использованию протокола WebDAV.

    Следующим действием напишем небольшую программу, способную выполнить четыре операции: создать папку на удаленном хосте, загрузить объект, скачать объект и удалить объект. Этих операций достаточно для большинства приложений, решающих производственные задачи. Для простоты создадим WinForms-приложение. В паре слов расскажу о своей проге. Она представляет собой консольное приложение, запускаемое батником по расписанию. Ее основное действие — это заливка файлов на удаленный хост, при этом в ее задачи входит корректная обработка маски для выбора файлов, а также обработка путей, по которым они размещены, плюс правильное создание в облаке иерархии папок, подобной размещенной на локальном диске. Кроме того, поскольку программа работает в автоматическом режиме, она создает файл с логами. В нашей сегодняшней программе мы опустим эти действия (очевидно, что они не относятся к теме) и сконцентрируемся на протоколе WebDAV.

    Обрати внимание: при создании заготовки проекта за основу лучше взять .NET Framework 4.0. И хотя поддержка WebDAV появилась еще во второй версии, по тестам стало видно, что та же самая программа, перекомпилированная с использованием .NET 4, работает в два раза быстрее, и это касается скорости работы с файлами и их пересылкой.

    После создания заготовки приложения размести на его форме четыре кнопки. Первой операцией, которую мы реализуем, будет создание папки (или коллекции). Она самая простая из всех. На заметку: хотя Яндекс.Диск работает по защищенному протоколу HTTPS, папку можно создать по HTTP. Также на форме нам понадобятся четыре поля ввода: для задания адреса удаленного хоста (пока нацелимся на Яндекс.Диск: https://webdav.yandex.ru/), для ввода имени пользователя, пароля (для аутентификации на Яндексе) и ввода имени папки, которую мы хотим создать в облаке (рис. 1). Обрати внимание: адрес сервера надо вводить вместе с указанием протокола, в данном случае https://.

    Первым делом в коде подключи пространства имен: using System.Net; — для работы с сетью и using System.IO; — для файлового ввода-вывода. Затем создай обработчик события нажатия на кнопку CreateDir. В него напиши такой код:

    Вкратце обсудим код. В начале для удобства размещаем данные из полей ввода в переменные: имя папки, адрес хоста, имя и пароль юзера. Далее формируем URL-адрес: к адресу хоста прибавляем имя создаваемой папки. Как и у HTTP, у WebDAV есть стандартный номер порта — 443, поэтому его указывать необязательно. Теперь на основе URL мы можем создать объект HTTP-запроса, что делается в следующей строке. После создания надо заполнить некоторые его свойства. То есть необходимо указать такие данные, которые будут переданы серверу в заголовке запроса. Смотрим документацию Яндекса (ссылка приведена выше). В число необходимых параметров входят данные аутентификации. Яндекс принимает эти данные в двух видах: Basic — логин и пароль, QAuth — токен по протоколу QAuth. Мы выберем первый путь. Однако в таком случае данные должны быть закодированы. Это осуществляет объект класса NetworkCredential, конструктор которого получает имя и пароль в виде строк. Созданный объект этого класса присваивается свойству Credentials объекта запроса. Следующей строкой мы сообщаем, какую команду мы хотим выполнить, — MKCOL. В этом случае никакие данные передавать/получать не требуется, и сразу после этого мы отправляем запрос. Далее мы можем посмотреть, какой ответ вернул сервер, в случае успеха ответом будет строка Created. В классе HttpWebRequest определено много ответов на все случаи совместного общения клиента и сервера.

    WebDAV-протокол не позволяет создать несколько вложенных папок за один запрос, например /folder1/folder2/; можно создать только одну папку: /folder1/. Если каталог существует, а отправленный запрос пытается создать одноименную директорию, в таком случае сервер сгенерирует исключение, которое надо перехватить конструкцией try/catch. В приведенном выше примере не происходит обработка исключений, поэтому если будешь использовать этот код в своем приложении, то не забудь ее добавить. Если необходимо узнать, существует каталог или нет, то для этого можно воспользоваться запросом PROPFIND, а потом получить и пропарсить ответ сервера, содержащий инфу в формате XML о имеющихся на сервере объектах. Но это получится долго, и, на мой взгляд, лучше использовать запрос MKCOL и в случае присутствия одноименной папки обработать исключение. Таким образом в своей консольной утилите я создаю иерархию папок. Кроме того, если одноименный каталог уже существует, происходит заход в него.

    Удаление объекта

    Удаление файла и/или директории по протоколу WebDAV реализуется так же просто, как создание коллекции. Для реализации этой задачи послужит приведенный выше код, в котором надо заменить строчку, задающую выполняемый сервером метод, на следующую:

    Как видно, в классе WebRequestMethods.Http отсутствует метод Delete, но мы можем задать желаемый метод в виде строки. Она будет отправлена на сервер, главное, чтобы он был в состоянии обработать и выполнить этот метод, а WebDAV-сервер, как мы знаем, на это способен.

    В этом случае также лучше использовать конструкцию try/catch для перехвата исключения, которое может возникнуть по причине отсутствия удаляемого объекта.

    Скачивание файла

    Чтобы скачать файл из облачного хранилища по протоколу WebDAV, нужно проделать не так уж много манипуляций с имеющимся кодом. Но для начала закинь какой-нибудь файл в облако стандартными средствами (через веб-интерфейс или десктопный Яндекс-клиент). По замыслу, при скачивании файла в четвертое (нижнее) поле ввода мы будем вводить имя файла, который хотим закачать. Это же имя присвоим файлу-результату на локальном компе. Заметь, на сервере мы можем указать /Software/file.txt и будет получен доступ к файлу в папке Software, однако в локальной файловой системе автоматом папка создана не будет, поэтому ее предварительно надо создать. Коротко говоря, мы будем качать файл ZuneSetupPkg.exe (незаменимая тулза для работы с Windows Phone, которую частенько приходится доустанавливать на чужих компах, поэтому она всегда у меня под рукой — в облаке) из корня Яндекс.Диска в директорию с экзэшником.

    В обработчике нажатия на кнопку Download после инициализации переменных, создания объекта-запроса и задания полномочий (Credentials) задай тип метода: GET (см. исходник в материалах к номеру). Затем, получив ответ сервера (объект класса HttpWebResponse), объявим переменные для чтения данных:

    В последней строчке кода читаем из заголовка ответа от сервера размер файла и сохраняем его в переменную. Дальше создаем файловый поток для записи файла на диск:

    Затем получаем поток от сервера:

    Порциями читаем из него данные и пишем их в файл, пока есть что писать:

    После того как все данные записаны в файл, закрываем оба потока и серверный ответ. Во время считывания данных мы увеличивали переменную totalBytesRead на количество считанных байт. В этом случае при отсутствии ошибок размер этой переменной должен стать равным размеру, который мы считали из заголовка, и если это так, то файл скачан корректно и мы выводим сообщение об этом (рис. 2), если же размеры не равны, тогда произошла неудача, об этом мы тоже сообщаем пользователю.

    Этот код не лишен исключений, которые надо ловить, среди них: (404) невозможно найти файл (на сервере), невозможно записать в указанное место и многие другие.

    Загрузка файла на сервер

    Последняя операция, без которой наша утилита будет неполной, — это загрузка файла на удаленный хост. Это самая «хитрая» операция. Обсужденные выше операции не вызвали ни малейшего затруднения, но эта оказалась покруче! Я уже рассказывал, что с реализацией загрузки файла были трудности при использовании других средств разработки. И не все гладко было на C#. Вначале в документации посмотрим, какой запрос для заливки файла ждет Яндекс (рис. 3).

    В полноценной программе надо осуществлять закачку сразу нескольких файлов (по желанию юзера), выбор файлов по маске, создание иерархии каталогов и, наконец, обработку ошибок. Мы же, чтобы не толочь воду в ступе, все это опустим и сконцентрируемся на загрузке одного заданного файла, без создания папок и обработки ошибок. Все это оставим тебе в качестве домашнего задания. Итак, в подготовленной мной проге из обработчика нажатия на кнопку вызывается метод UpdateFile, ему передаются имя хоста и имя загружаемого файла, которые берутся из соответствующих полей ввода. Начало самого метода подобно рассмотренным выше, однако теперь в заголовке запроса мы передаем на выполнение сервером команду PUT, то есть выказываем наше желание загрузить файл. Если при выполнении предыдущих запросов мы особо не опирались на документацию, то на этот раз она нам очень пригодится: включим в заголовок запроса все рекомендуемые Яндексом поля, а также некоторые дополнительные. Итак, рассмотрим код заголовка, а потом обсудим траблы:

    Значения некоторых параметров выведены методом научного тыка. Некоторые свойства зависят от других. Так, лучше отключить постоянное подключение (вторая строчка), ибо при этом генерируется исключение о невозможности одновременной чтения и записи в поток. Следующие два свойства задают тайм-аут для чтения и записи в сетевой поток. Значение -1 означает бесконечность. Размер загружаемого файла может быть неопределенно большим, поэтому мы не можем загадывать на время, которое понадобится для его загрузки. Следующее свойство: AllowWriteStreamBuffering — очень любопытное, оно включает или отключает буферизацию данных перед отправлением. При включении отправляемый файл сначала загружается в память, только после этого выгружается на сервер. Странность этого свойства заключается в том, что на некоторых хостах можно без проблем, отключив буферизацию, залить файл, однако на других будет всплывать исключение о необходимости буферизации. Возможно, это связано с какими-то настройками реестра или связи; не исключаю также различия между сервисами. В случае если буферизация включена и на сервер отправляется большой файл, может не хватить ресурсов (исключение SystemOutOfMemory). В свою прогу можешь добавить флажок для включения и отключения буферизации. Если буферизация отключена, тогда надо включить флаг PreAuthenticate (следующее свойство), с помощью которого данные аутентификации отправляются вместе с заголовком. Следующий параметр SendChunked (только для Яндекс.Диска) позволяет загружать на удаленный хост файлы заранее неопределенного размера, на что Dropbox отвечает исключением. Далее указываем тип передаваемых данных, версию используемого протокола (11 означает 1.1), количество возможных HTTP-подключений: больше одного ни к чему. Запрещаем автоматическое перенаправление. Чтобы задать следующее рекомендуемое поле: “Expect: 100-continue”, включающее ожидание ответа для запроса загрузки, нельзя использовать закомментированное свойство, надо использовать код, который строчкой ниже: request.ServicePoint.Expect100Continue = true;. Последним свойством HTTP-заголовка включается маска для принимаемых объектов, в нашем случае принимаются любые файлы: с произвольным именем и расширением.

    После того как запрос сформирован, надо получить сетевой поток, в который мы будем записывать данные, отправляемые на сервер. Также открываем локальный файл для чтения. Выделяем байтовый буфер для временного хранения считанных из файла данных; затем в цикле начинаем читать и отправлять, записывая данные в поток. После этого закрываем сетевой и файловый потоки, в общем, как обычно. Получив ответ от сервера, проверяем HTTP-статус на его равенство флагу Created и сравниваем размер файла с количеством переданных байт; если оба условия выполняются, значит, пересылка успешна, иначе — возникла проблема.

    Итоги

    На этом разработка нашей утилиты подошла к концу. В ней мы реализовали весь планируемый функционал — четыре самые нужные команды, без которых не может обойтись ни один менеджер управления файлами на удаленном хосте. Мы не стали привязываться к услугам определенного хостинга, используя его API, мы разработали универсальное приложение, общающееся с сервером по стандартному протоколу WebDAV. Это позволило нашей программе, используя один код, подключаться сразу к нескольким серверам (я тестировал на Yandex.disk и Dropbox). Тем не менее, как мы увидели, разные сервисы несколько по-разному интерпретируют и поддерживают протокол.

    Дальнейшее развитие проги предоставляю тебе, по ходу статьи я указал на возможные улучшения: это и загрузка нескольких файлов, и создание иерархии папок, и распараллеливание загрузки, и многое другое. Если копнуть глубже в протокол WebDAV, можно реализовать другие команды для управления контентом на сервере.

    На этой ноте я хочу пожелать тебе удачи во всех делах и быть побольше на свежем воздухе :). До встречи на страницах ][!

    Iis управление безопасностью webdav

    Some ProGet feed endpoints use PUT or DELETE requests. If the WebDAV module is enabled in IIS, these requests can result in a 405 Method Not Allowed error. This article details several methods of disabling the WebDAV module.

    1. Disable the WebDAV Publishing feature in Windows

    This is the easiest solution if WebDAV is not desired for any website running on IIS on the server.

    Open a Windows Explorer window and navigate to Control Panel\All Control Panel Items\Programs and Features . Select the Turn Windows features on or off option in the menu on the left. Uncheck the following option: Internet Information Services → World Wide Web Services → Common HTTP Features → WebDAV Publishing. Click OK. You may need to restart the server for the change to take effect.

    2. Disable WebDAVModule in the Internet Information Services Manager

    This solution requires the IIS Manager program to be installed. It does not affect other applications running on IIS.

    Open the IIS Manager and navigate to the ProGet site. Double-click the Handler Mappings item. Right click WebDAV and select Remove. Navigate back to the ProGet site. Double-click the Modules item. Right click WebDAVModule and select Remove.

    3. Manually edit Web.config to disable WebDAV

    This solution requires editing an XML configuration file directly, but does not require any extra software.

    Edit Web.config. By default, it is located in C:\Program Files\ProGet\WebApp . Find the section in the section. Add before . Find the section in the section. Add before .

    You may need to recycle the app pool or restart IIS for this change to take effect.

    Илон Маск рекомендует:  Что такое код acos
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL