Meeting Join

Sie werden zu einem Lync/Skype für Business Meeting eingeladen und klicken auf den Link. Was passiert da dann genau und wo kann ein Anwender oder Admin schauen, wenn es nicht wie erwartet funktioniert ?

Die Meeting Einladung

Fangen wir direkt mit der Einladung an: Wer zu einem Lync oder Skype für Business Meeting eingeladen wird, bekommt eine so oder ähnlich aussehende Terminanfragen mit einem Hyperlink:

Ich bin hier mit der Maus extra über dem Link stehen geblieben, damit Sie die URL anschauen können.

ACHTUNG: Es gibt Berichte, dass Angreifer eine MeetingURL zu Personen senden und diese damit auf eine nachgemachte Lync Web App-Seite leiten und statt des originalen PlugIns einen Schadcode unterjubeln. Benutzer sollten auch hier darauf achten, dass es eine HTTPS-URL ist, das Installationspaket digital signiert ist und Sie tatsächlich mit der Firma auch ein Meeting vereinbart haben.

Der "Klick" mit Browser

Wenn Sie vom PC aus an diesem Meeting teilnehmen wollen, dann klicken Sie in Outlook oder dem Mailclient ihrer Wahl auf diesen Link und ihr "Default Browser" startet. Der Browser verbindet sich mit der URL und sendet eine HTTP-GET zum Konferenzserver. Es ist dabei egal, welcher Lync Pool in einer größeren Umgebung angesprochen wird. Dies ist eine SimpleURL. Allerdings schaut sich der Server genau an, welche Anfrage da kommt. Hier mal der Mitschnitt mit Fiddler. Im oberen Teil sehen Sie nach dem Tunnelaufbau in Paket 4 den GET gefolgt von der Anforderung einer CSS-Datei in Paket 5.

Die Pakete 6-16 bauen mehrere SSL-Tunnel auf, um parallel dann die Bilder und andere Komponenten der Webseite zu laden. Interessant ist aber erst mal das Paket 2. Dieses enthält den GET mit einer HTML-Seite als Antwort:

Der Request enthält noch ganz normale user-Agents etc. aber die Antwort startet direkt mit einem JavaScript, welche ich nun aber nicht weiter auseinander nehme. Interessant wird es wieder bei der Zeile 23, da hier das Plugin ermittelt wird.

Auch hier ist JavaScript aktiv und ich zeige hier exemplarisch einen Ausschnitt.

Das Skript versucht das installierte OCS/Lync/Skype für Business PlugIn zu ermitteln und zu starten.

Das Browser PlugIn

Damit dieser Code überhaupt funktionieren kann, muss natürlich auf dem Client das PlugIn im "richtigen" Browser installiert und aktiviert sein. Hier sehen Sie am Beispiel des Internet Explorer das relevante Plugin.

Natürlich gibt es noch weitere AddIns, z.B. der "Anruf per Mausklick", welche in Webseiten nach Rufnummern per Regular Expression sucht und diese dann mit einem Icon zum Anrufen versieht etc.

Aktuell scheint es so zu sein, dass nur mit dem IE als Standard-Browser der "Klick" auf den Link in der Einladung auch den Skype für Business Client starten kann. Wer aber als Standard Browser stattdessen Chrome, Forefox o.ä. nutzt, wird in das Meeting über den Lync Web Client eintreten.

OCSMEET-Extension

Zu Zeiten von OCS (Office Communication Server, der Vorgänger von Lync 2010) hat das AddIn noch den userAgent des Browsers verändert und der Server konnte so den installierten "Full Client" bzw. Meeting-Client erkennen und eine passende "Meeting-Datei " liefern. Dies ist heute immer noch aktiv. Sie müssen nur in der Registrierung nach OCSMEET suchen und finden auch bei Skype für Business folgende Stellen:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.ocsmeet]
@="ocsmeet_auto_file"
"Content-Type"="application/vnd.microsoft.ocsmeeting"

[HKEY_CLASSES_ROOT\ocsmeet_auto_file]

[HKEY_CLASSES_ROOT\ocsmeet_auto_file\shell]

[HKEY_CLASSES_ROOT\ocsmeet_auto_file\shell\edit]

[HKEY_CLASSES_ROOT\ocsmeet_auto_file\shell\edit\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office15\\Lync.exe\" \"%1\""

[HKEY_CLASSES_ROOT\ocsmeet_auto_file\shell\open]

[HKEY_CLASSES_ROOT\ocsmeet_auto_file\shell\open\command]
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office15\\Lync.exe\" \"%1\""

Über die Funktion "Standardprogramme" sehen Sie ebenfalls die Verknüpfung:

Sie können ja auf ihrer Festplatte mal nach OCSMEET suchen.

Enthalten ist einfach eine XML-Struktur, die vom Full Client entsprechend ausgewertet wird. Ich habe die XML zur Lesbarkeit eingerückt.

Anhand dieser Informationen kann der volle Client dann auch in das Meeting eintreten. Man kann hier aber auch die Fallback-URL sehen

Client-Verbindung

Der Communicator wird natürlich nicht ein zweites Mal gestartet, sondern liest diese Datei ein und versucht sich mit der Konferenz zu verbinden. Bei einem Kunden hat genau das bei einem internen Client nicht geklappt. Alle Tests waren erfolgreich und der Browser konnte ja die JOIN-URL erreichen. Wir haben dann mit NetMon/WireShark nachgeschaut und gesehen, das der Client versucht, direkt auf die öffentliche IP-Adresse der Join-URL zu gehen. Das ist natürlich grober Unfug in größeren Firmen, die Internet-Zugriffe natürlich über den Proxy leiten. Über den Proxy hat der Browser ja vorher die OCSMEET-Datei geladen. Letztlich scheint es ein Bug zu sein, der sich an den Proxy-Einstellungen festmachen lässt. Hier kann man ja drei Optionen aktiveren.

Immer dann, wenn die "Einstellungen automatisch erkennen" aktiv war, konnte der Anwender kein Meeting von Internet mehr startet, weil der Lync Client dann nicht den Proxy sondern eine direkte Verbindung versucht hat.

Erwarten Sie sich nicht zu viel Hilfe vom UCCAPI-Log des Clients. HTTPS-Zugriffe auf Webseiten und WebServices werden dort leider nicht protokolliert.

Damit ergeben sich hier mehrere Optionen, um das Problem zu umgehen

  • AutoKonfig entfernen
    Wenn Sie im Netzwerk eine PAC-Datei nutzen oder den Proxy-Server fix vorgeben, dann sollten Sie die Checkbox für die Automatische Suche ebenfalls entfernen. Einige Dinge werden dadurch sicherlich schneller
  • TCP RSET
    Eine Ursache könnte natürlich auch sein, dass die Firewall den unerlaubten Verbindungsversuch einfach ins Leere laufen lässt und kein RESET auf die TCP-Verbindung sendet. So kann der Client nicht schneller erkennen, ob die Verbindung möglich ist.
  • SplitDNS
    Denkbar wäre auch über einen DNS-Eintrag im internen LAN die JOIN-URL von innen auf den internen Pool zu leiten. Der muss dann hier nur auch die Namen im Zertifikate haben.
  • Zugriff ohne Proxy
    Oder der Zugriff auf die offizielle IP von intern wäre auch ohne Proxy möglich.

Es gibt also mehrere Optionen um dieses Fehlverhalten des Clients zu entschärfen. Mir stellt sich natürlich immer noch die Frage, warum der Internet Explorer damit umgehen kann während der Skype für Business Client (Stand: Juli 2015) damit ein Problem hat.

Wenn Sie also mal "länger" zum Eintritt in ein Meeting brauchen, dann kontrollieren Sie auf dem Client mit NetMon/WireShark einfach mal, wie der Communicator versucht, die Meeting-URL zu erreichen.

Lync Web App

Immer wenn der Full-Client nicht in das Meeting eintreten kann, versucht er einen Fallback auf LyncWebApp. Lync Web App wird auch genutzt, wenn sie das Plug-In nicht installiert haben oder den falschen Browser nutzen, für den es kein Plugin gibt. Sie können den Zugriff durch das Anhängen von "?sl=1" an die URL natürlich auch erzwingen. Einige Firmen machen dies auch als Default (Siehe ForceLWA) um bestimmte Port nicht freigeben zu müssen.

Wenn Sie nämlich "2423848 users can't join online meetings in Skype für Business Online" lesen, dann sind für die Verwendung des vollen Clients auch einige Voraussetzungen beim Teilnehmer erforderlich. Unter dem Punkt "Troubleshooting Lync federation issues" steht z.B.:

Your Skype für Business Online organization must have External Communications enabled, and external communication must be completely open. Or, the external user’s domain must be in the Allow list.

The external organization must have federation configured correctly from their side, too.

For anonymous join to work, a specific DNS SRV record must be present in DNS

Wenn Firmen also z.B. Federation nicht nutzen, dann kann der volle Client nicht als authentifizierter Benutzer dem Meeting beitreten. Diese Information ist aber nicht mehr zwingend aktuell, denn mit diversen Updates wurden diese Einschränkungen reduziert.

Weiter in SIP

Kommt hingegen der Communicator Client zum Einsatz, dann geht es mit SIP weiter. Der Client sendet einen passenden INVITE an die Konferenz MCU. Hier gilt es dann zu unterscheiden, ob der Anwender in der gleichen Organisation ist oder extern über Federation arbeitet.

Weitere Links