Lync 2013 Mobile и Windows Phone 8.1 Developer Preview: проблемы с входом после обновления ОС телефона.

bing-food-drink-hands-on-02Всем привет! Ну по Lync-то я известный «иксперт с мировым именем», то есть никакой :) И тем не менее это будет первый пост посвященный траблшутингу мобильного клиента в этом блоге. И вообще мой первый публичный пост, посвященный Lync 2013, который я начал изучать буквально с января-февраля 2014 года.

Предыстория:
Пошел я сегодня обедать в кафе, неподалеку от работы. Вернувшись в хорошем настроении, сел на свое рабочее место и вижу, мигает иконка Lync в трее, сообщение. А там Денис Дягилев вопрошает:
«А у тебя клиент Lync на Windows Phone 8.1 нормально логинится?»
Я решил проверить, полез в карман за телефоном… и похолодел. Блин, оставил в кафе на диванчике. Не отвечая на Денискины расспросы я вскочил и как бешеный побежал обратно в кафе.
«Я это… у вас тут… минут 15 назад… это… телефон оставил…»
Охранник улыбнулся, достал телефон из своего стола и отдал с улыбкой и пожеланием больше не терять. Спасибо тебе, добрый человек!

История:
Не так давно, как вы все знаете, для разработчиков стало доступно обновление для Windows Phone 8, известное, как Windows Phone 8.1 Developer Preview. Для его получения необходимо было зарегистрироваться в программе Developer Preview, установить специальное приложение и получить обновление. Что все ИТ-энтузиасты и по совместительству обладатели поддерживаемых устройств и кинулись делать.
Вадим Стеркин написал в своем блоге статью, как это все сделать не дожидаясь официального появления обновления для «цивилов». Я по сути воспользовался его статьей, так как очень уж желал поговорить с Кортаной.
В общем проверяю я Денискину проблему — при попытке входа получаю всплывающее окно «Что-то изменилось в конфигурации сервера, вам нужно предоставить учетные данные». И предлагает либо использовать сохраненные учетные данные, либо ввести новые. Без разницы, что я выбираю — результат один — бесконечно долгий процесс входа до момента отключения телефона в режим энергосбережения. По пробуждении картина повторяется.
Хорошо.
Немного о топологии:
Сейчас у меня пилотная эксплуатация, следовательно решение максимально простое и не отказоустойчивое.
Lync Topology
Все организовано максимально просто. Один Front-End Server Standard Edition, один же Edge Server и Microsoft Forefront TMG 2010 в качестве Reverse Proxy и Firewall. Все настроено по шикарной статье Joakim Silverdrake с оглядкой на официальные рекомендации Microsoft (отличий я там не заметил).
Для внешнего доступа с использованием TLS\ SSL я установил на TMG сертификат wildcard от RapidSSL. Эти сертификаты известны своей дешевизной и известными проблемами с доверием. Дело в том, что сертификатов корневых УЦ GeoTrust, который используется RapidSSL нет в поставке ОС Windows «из коробки» и для корректной работы необходимо обновление Root CA Update из службы Windows Update.
В общем не самым лучшим образом себя ведет этот сертификат.
Поначалу я грешил на него.
Итак, методика траблшутинга:
Я представляю себе, как работает мобильный клиент Lync. Куда и зачем он обращается. Поэтому будем искать хвосты по порядку.
0. Проверяю на наличие возможных проблем анализатором ExRCA
1. Первым делом я начинаю смотреть в логи Microsoft TMG 2010.
2. Затем логи Front-End Server
3. Затем логи Edge Server
4. Затем логи клиента
5. И наконец начинаю горько плакать, потому что если там ничего нет, то я не знаю куда смотреть вообще.
Итак, поехали.
ExRCA ничего не рассказал, пройдя на ура, предупредив только о специфических особенностях моего сертификата. Я задумался о доверии. Но почта с того же телефона работает отлично.
Логи TMG картину особо не прояснили. В них я вижу, что клиент обменивается данными с Lync Web Services (со службой автообнаружения, которую он находит в DNS посредством поиска записи lyncdiscover.domain.com), потом лезет на Access Edge и там сессия обрывается сервером. Последнее событие имеет вид: FWX_E_TCP_NOT_SYN_PACKET_DROPPED. При этом нет кода выхода (Result Code). Да… Малоинформативно, но как минимум я засомневался в грехах моего сертификата.
Логи на Front-End пустые совершенно. Я не увидел ни одного события, которые я мог хоть как-то связать с моей проблемой. Я смотрел в Application Log, System Log и Lync Server Log.
Логи на Edge еще веселее. В них информации еще меньше, чем на FE.
Логи клиента…
Это, братцы, песня отдельная. Логи можно выгрузить, но… в формате JPEG. Остается загадкой, почему не PSD, MP3 или AVI. А еще лучше MKV, чтобы FullHD. Логика непонятная, но факт остается фактом, описанным в блоге одного из разработчиков мобильного приложения. Логи в формате Date_ Time.jpg сохраняются в \Phone\Pictures\Saved Pictures. Надо подключить телефон к компьютеру, сохранить эти файлы и открыть их блокнотом. При этом их нельзя переслать почтой, т.к. он придет без данных (фильтрация по MIME-типам рулит!).
Логи эти для разработчика. Я не нашел ничего внятного, кроме мириад записей о том, что приложение подгрузило вот такой-то компонент, и он выполнил вот такой-то код. В общем девелоперу, наверное, полезно, но не администратору. При этом они называются гордо Sign-In Logs.
Собственно все. Я накатал слезливый пост в нашу фейсбучную группу, посвященную Lync, в надежде, что мне там хоть чем-то помогут.
А еще я наткнулся на замечательную утилиту и не менее замечательный способ захвата и расшифровки траффика с мобильного устройства, даже несмотря на SSL. А побуду-ка я Man’ом-in-the-Middle, решил я, и настроил дома такую штуку за три минуты с перекурами вот по этой замечательной статье. Суть работы Fiddler Web Deugger в том, что он перехватывает траффик SSL, подменяя сертификат сервера своим, расшифровывает его, анализирует, обратно зашифровывает и отдает целевому серверу (шифрует он уже сертификатом сервера). Ничего не напоминает?
Запустив сию чудную утилиту и настроив свое устройство на использование его в качестве шлюза, я быстро докопался, что последний ответ я получаю от сервиса WebTicket. И сообщение нерадостное:
POST https://lync.domain.com/webticket/webticketservice.svc/mex HTTP/1.1
X-MS-WebTicketSupported: cwt, saml
X-MS-Server-Fqdn: m-s-rtc01.domain.com
401 — Unauthorized: Access is denied due to invalid credentials
И это очень странно, потому что абсолютно все остальные устройства работают, как часы.
Далее в процессе поисков я натыкаюсь на статью наверное самого полезного MVP Lync на планете Земля, Jeff Schertz, где он описывает похожее поведение с устройствами iOS.
Я смотрю настройки аутентификации на каталогах Web Services (Get-CsWebServiceConfiguration) и вижу, что у меня UseWindowsAuth: NTLM.
Меняю на Negotiate
Set-CsWebServiceConfiguration –UseWindowsAuth Negotiate
Вуаля! Все заработало.
Т.е. в Windows Phone 8 NTLM было можно, в Windows Phone 8.1 — нет.
Поискав описание изменений со стороны безопасности в Windows Phone 8.1, я наткнулся всего лишь на Overview, в котором поиск по словам «NTLM» и «Negotiate» не принес резльтатов.
В общем проблема решилась, будет круто, если это кому-то поможет.

 

Реклама
Lync 2013 Mobile и Windows Phone 8.1 Developer Preview: проблемы с входом после обновления ОС телефона.

Lync 2013 Mobile и Windows Phone 8.1 Developer Preview: проблемы с входом после обновления ОС телефона.: Один комментарий

  1. Denis Dyagilev:

    Какая поучительная история.
    А вот моя бабушка использует Office 365, и у нее не болит голова.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s