У нас есть специальное решение WebDAV с использованием компонента IT Hit WebDAV server. Для аутентификации мы используем реализацию Identity Server 4. Поток аутентификации, с точки зрения пользователя, примерно такой:
- Пользователи нажимают на ссылку на документ WebDAV в приложении.
- Office (в большинстве наших тестовых случаев Word) открыт.
- Если пользователь впервые открыл документ (или срок действия файла cookie истек), отобразится диалоговое окно входа.
- Пользователь вводит свое имя пользователя и пароль, нажимает кнопку входа и, в случае успеха, документ открывается.
За кулисами течение похоже на следующее:
- В родительскую папку документа делается запрос HEAD, например, https://webdav.example.com/documents/
- Ответ на этот запрос содержит заголовки, необходимые Office для отображения диалога входа в систему. X-FORMS_BASED_AUTH_REQUIRED и т. Д.
- Office следует URL-адресу из значения заголовка X-FORMS_BASED_AUTH_REQUIRED. например https://identityserver.example.com/connect/authorize?client_id=WebDAV&response_type=code+id_token+token...
- Возвращает ответ 302 с местоположением, похожим на: https://identityserver.example.com/account/login?returnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3DWebDAV%26response_type%3Dcode%2520id_token%2520token...
- Office открывает этот URL в диалоге. Когда пользователь вводит свои учетные данные и нажимает на кнопку входа в систему, в форму входа поступает запрос POST, возвращается 302 с расположением URL-адреса обратного вызова Identity Server, например https://identityserver.example.com/connect/authorize/callback?client_id=WebDAV&response_type=code%20id_token%20token...
- На этот URL делается запрос GET, который затем отправляет информацию Identity Server (токены) в настроенный URL-адрес обратного вызова клиента, например, https://webdav.example.com/account/callback.
- Это пользовательская конечная точка, которая сохраняет токен доступа Identity Server в файле cookie (чтобы Office мог использовать файл cookie), а затем отвечает 302 с местоположением https://webdav.example.com/account/success. Этот URL-адрес совпадает с настроенным в заголовке X-FORMS_BASED_AUTH_RETURN_URL.
На Windows-клиенте все это отлично работает. Однако на Mac (Mac OS Sierra 10.12.6) и с использованием Office 2016 (16.11.1 (180319)) мы видим, что ответ 302 возвращается с URL-адреса https://webdav.example.com/account/callback, но он никогда не выполняется, запрос GET отсутствует сделано до https://webdav.example.com/account/success.
Кроме того, выполняются дальнейшие запросы WebDAV и, шагая по коду, мы видим, что cookie, похоже, никогда не устанавливается на Mac, несмотря на то, что код для этого выполняется без ошибок.
Итак, что происходит?
Спасибо,
Стюарт.