На этой неделе я продолжаю тестировать работу Outlook Anywhere и все возникающие проблемки сразу же проверяю в тестовой виртуальной среде. Неожиданные проблемы возникли с механизмом Autodiscover. Все вебсервисы опубликованы через ISA 2006 SP1 и прекрасно работают. Внутри сети Autodiscover работает и тестирование веб сервисов проходит успешно. Однако, если вручную создать профиль Outlook и подключиться из Интернет, а затем запустить тестирование автоконфигурации (Ctrl+ нажать мышкой на значок Outlook в system tray), то возникает ошибка. Outlook не может не может найти настройки для автоматического подключения.
На этом скриншоте видно, что Outlook получает ошибку 500 при открытии файла https://autodiscover.flowers.ru/autodiscover/autodiscover.xml, хотя имя в DNS существует и указано в SAN сертификате.
Если попытаться открыть эту ссылку в браузере, то возникает код ошибки 600 Invalid Request. Это сообщение не является ошибкой в полном понимании этого слова, так и должно быть, т.к. Outlook не просто пытается открыть этот файл. Это говорит о том, что и сертификат и DNS имена сконфигурированы правильно.
Дальше эксперименты привели к созданному web listener и опытным путем было выяснено, что если в web listener стоит тип аутентификации «HTML Form Authentication», то Autodiscover из Outlook не работает. Если же тип поменять на «HTTP Authentication» — «Basic», то autodiscovery извне начинает работать. Создавать два web listener совсем не хотелось, а делать «HTTP Authentication» — «Basic» для входа в OWA тоже не правильно, т.к. пользователь при входе в OWA будет получать окно базовой авторизации, а не красивую форму для ввода имени пользователя и пароля. Я посоветовался с
Выдержка из документации:
By default, when form-based authentication cannot be used with a specific client, ISA Server requires Basic authentication instead.
Но Autodiscover у меня по прежнему не работал. Артем Синицын подсказал, что для Autodiscover лучше сделать отдельное правило публикации. Сделал, не работает. Поиск по Интернету привел на
“The final change to the Autodiscover rule that is needed is to modify authentication. Click on the Users tab and remove All Authenticated Users. Add the All Users group. There is currently a bug in Exchange 2007 that does not allow ISA 2006 to publish the Exchange 2007 Autodiscover when All Registered Users is selected. Look out for a fix in Exchange 2007 SP1″.
То есть удаляем «All Authenticated Users» и добавляем «All Users»
После этих изменений Autodiscover начинает работать извне без использования еще одного web listener. Я пока не понимаю точного механизма и вечером обязательно спрошу у Артема Синицына о том, насколько это критично в плане безопасности. Если у вас есть мысли по этому поводу — пожалуйста, напишите в комментах.
UPDATE:
Вчера поговорил с Артемом и он сказал, что предложенное мной решение самый настоящий костыль, т.е. оно работает, но совсем не безопасно, т.к. не авторизованный трафик идет до CAS сервера и против CAS могут быть применены разного типа атаки. Поэтому к вышеописанному нужно относиться не как к техническому решению, а как к эксперементу. Получается, что для нормальной работы Autodiscover нужен отдельный WEB listener. Если знаете другое решение, плиз, напишите в комментах.
Осталась еще одна дурацкая проблема, после ввода данных при первоначальной настройке профиля в Outlook появляется окно базовой авторизации.
Вопрос состоит в том, а зачем Outlook спрашивать еще раз мои учетные данные, если я их ввел выше? Какой смысл тогда вводить пароль? Пока этот вопрос открыт и я надеюсь, что найду на него ответ в ближайшее время.
p.s. Просьба жестко не стебаться над моим тестовым доменом flowers.ru, просто захотелось чего-то прекрасного в виртуалках 🙂