Office Web Apps Server für Lync

Diese Rolle wird auch abweichend als OWA (Office Webs Apps Server), OWC (Office Web Components) oder WAC (Web Application Companion) bezeichnet. Anfang Mail 2016 wurde die neue Version unter dem Namen "Office Online Server" (OOS) veröffentlicht.
https://blogs.office.com/2016/05/04/office-online-server-now-available/ 

Die Aufgabe dieser Roll in Lync ist einzig die Konvertierung von Powerpoints in Lync Meeting in HTML5, damit alle Clients diese Folien auf allen Geräten sehen können.

Diese Funktion wird NICHT vom Lync 2010 Client genutzt, sondern nur vom Lync 2013 Client, Lync 2013 WebApp und den neuen Mobil Clients. Ein Lync 2010 Client lädt sich die Powerpoint weiterhin vom Frontend über die LyncWeb-Veröffentlichung herunter.

ACHTUNG:
Updates für den Office Web App Server dürfen nicht "einfach so" und schon gar nicht über Windows update oder WSUS installiert werden. Lesen Sie dazu den Abschnitt Office Web Apps aktualisieren

Auch Windows Security Updates enthalten Updates für den WAC-Server. So z.B. im April 2013 Bulletin
http://technet.microsoft.com/en-au/security/bulletin/ms13-apr
Da der WAC-Server über einen Reverse Proxy auch aus dem Internet erreichbar ist, sollten Sie hier ein Auge drauf haben.

Office Web App Server ist seit 24. Nov 2014 keine kostenfreier Download mehr !!

Web Apps Server Removal from Download Center
http://blogs.technet.com/b/office_sustained_engineering/archive/2014/10/22/web-apps-server-removal-from-download-center.aspx

Office Web Apps Server will only be available für Volume License customers shortly
http://www.wictorwilen.se/office-web-apps-server-will-only-be-available-for-volume-license-customers-shortly

Firmen finden ihn (Stand Mai 2015) in ihrem Portal unter dem Office 2013 32bit Client !. Bislang konnte mir noch niemand erklären, warum eine 64bit Server Version unter dem Office 32bit Client zu suchen ist.

Um auf möglichst vielen Plattformen eine optimierte Powerpoint-Anzeige zu erreichen hat Microsoft die Funktion des "Rendern" auf eine eigene Plattform verteilt. Die Aufgabe des WAC-Servers ist es, Powerpoint-Präsentationen so aufzubereiten, dass diese allein mit HTML5/JavaScript auf unterschiedlichen Geräten angezeigt werden können. Die Installation eines WAC-Servers und dessen Erreichbarkeit von intern und aus dem Internet ist für Lync 2013 Konferenzen erforderlich.

Der OWC-Server kann nicht auf einem Server installiert werden, der von Lync für andere Rollen genutzt wird. Der Topology-Builder prüft dies anhand des FQDN. Auf der anderen Seite kann dieser Server auch von Diensten wie Sharepoint 2013 oder Exchange 2013 OWA genutzt werden, so dass es eine Infrastrukturmaßnahme in einer Office 2013 Umgebung darstellt.

Office Web Apps Server is a new Office server product that delivers browser-based versions of Word, PowerPoint, Excel, and OneNote. A single Office Web Apps Server farm can support users who access Office files through SharePoint 2013, Lync Server 2013, Exchange Server 2013, shared folders, and web sites.
Quelle: http://www.microsoft.com/en-us/download/details.aspx?id=35489

Funktionsweise

Die Funktion von Office Web App ist nicht sofort ersichtlich. Daher habe ich am Beispiel die Verkehrswege und deren Abfolge dokumentiert:

Die Pfeile bedeuten in der logischen Abfolge,

  1. Sharepoint/Exchange: Zugriff auf die Webseite
    Anwender lesen per Webbrowser z.B. eine SharePoint Webseite oder nutzen Exchange Outlook WebApp. In beiden Fällen kann der Anwender ein Office-Dokument öffnen wollen.
  2. Antwort an den Client
    Die Anfrage an den Server wird vom WebServer aber nun nicht mit dem Download des DOCX-Dokuments beantwortet, sondern mit einer Umleitung zu einer URL, die direkt auf den Office Web Apps Server verweist. Bei einem Lync-Meeting wird diese URL vom Lync Konferenz Server erstellt und per SIP an den Client gesendet. All diese URLs enthalten folgende Informationen und daher ist eine Verschlüsselung dieser Information per TLS absolut erforderlich.
    • Die absolute URL des Office Web App Servers, also https://webapp.example.com
    • Informationen zum Zugriff auf das Dokument
    • Informationen zur Authentifizierung, z.B. als Token, welches eine kurze Zeit gilt.
  3. Der Client geht zum Office Web App Server
    Der HTTPS versucht nun der Client die Information vom Office Web App Server abzufragen. Der Client übergibt also die Informationen zum Speicherplatz der Datei als auch das Zugriffstoken an den Office Web App Server. Der Client authentifiziert sich aber nicht gegen den Office Web App Server.
  4. Office Web App holt die Information
    Der Office Web App Server nimmt nun die Information zu der gewünschten Datei aus den Parametern und startet seinerseits eine HTTPS-Anfrage an den Speicherdienst. Zudem übermittelt er das Zugriffstoken, welches mit enthalten war
  5. Der Speicherdienst holt die Datei
    Der Sharepoint-Server, der Exchange WebServer oder der LyncWeb Server bekommen die Anfrage und extrahieren den Ablageort der Datei als auch das kurz vorher ausgestellte Token. Allein das Token ist die Legitimation, die Datei auszuliefern. Der Office Web App Server authentifiziert sich nicht weiter am Speicherdienst, weder mit seinem Computerkonto noch mit Benutzerdaten per Impersonation.
  6. Kontent wird ausgeliefert
    Der Office Web App Server erhält nun die gewünschte Datei
  7. Rendering
    Nun beginnt eigentlich erst die Aufgabe des Office Web App Servers, die Datei zu öffnen und so für den Client als HTML5-Information aufzubereiten, dass diese die Datei sehen und ggfls. bearbeiten kann
  8. Auslieferung an den Client
    In der Regel sendet der Office Web App Server daher eine ganze menge an HTML, JavaScript, Bildern etc. an den Client, damit dieser quasi ein "Office im Browser" mit den angeforderten Dateien nutzen kann.

Nun wissen sie aber auch ,dass die Clients in diesem Fall zum Office Web App Server verbinden und nicht den primären Dienst als Reverse Proxy verwenden. Sie benötigen als einen eindeutigen FQDN mit Zertifikat und entsprechender Veröffentlichung für alle Clients, die über den Office Web App -Server auf Dokumente zugreifen sollen.

Kurzfassung

Für die Einrichtung sind ein paar Dinge erforderlich:

  • Name
    Der Server muss unter einem Namen erreichbar sein, für den auch ein Zertifikat erstellt werden kann.
  • Internet Veröffentlichung
    Für externe Teilnehmer muss der Webserver auch aus dem Internet erreichbar sein.
  • HTTPS-Infrastruktur (DNS, Zertifikate, ReverseProxy)
    Die Kommunikation zwischen den Clients und dem Server erfolgt per HTTPS über eine URL. Sie sollten Sich also zuerst einen Namen für den Server oder den Pool von Servern einfallen lassen und dafür ein Zertifikat anfordern. Das kann durchaus ein Zertifikat einer internen CA sein. Wenn Sie aber auch Teilnehmer aus dem Internet haben, dann müssen Sie sich eine sichere Veröffentlichung z.B. per Reverse Proxy überlegen.
    Der WAC-Server hat wie Lync und Exchange später eine "InternalURL" und eine "ExternalURL".
  • WAC-Server Installation
    Die Installation des WAC-Servers beschränkt sich in der Bereitstellung der Voraussetzungen (im wesentlichen IIS) und dem Ausführen des Setup
  • Loadbalancer
    Wenn Sie einen "Pool" mehrerer WAC-Server betreiben, dann sollten Sie folgende PowerShell-Befehle verwenden und Zugriffe über einen Loadbalancer auf die Server leitet

Beachten Sie daher auch die Hinweise von Microsoft:

Lizenz

Der Office Web Apps Server ist eine Software und Sie sollten Sich klar machen, dass bestimmte Betriebsarten zu lizenzieren sind. Die Quellen sind meiner Ansicht nach nicht komplett eindeutig aber nach meiner Einschätzung sind zwei Faktoren maßgeblich, dass Sie Office Web App lizenzieren müssen

  • Farm statt Single Server
    Sobald Sie aus einem einzelnen Server eine Farm aufbauen, ist die Funktion zu lizenzieren
  • ReadWrite statt ReadOnly
    Per Default sind die Office Web App Services "Readonly", d.h. Sie können über die URL ein Dokument von einer Quelle anfordern und Office Web App rendert das Dokument zu HTML5 zur Anzeige. Sie können die Services aber auch nutzen, um Office Dokumente zu bearbeiten. Das ist dann aber Lizenzpflichtig

View-only . By default, Office Web Apps is view-only. View-only functionality is provided für free.
Quelle: http://technet.microsoft.com/en-us/library/ff431682(v=office.15)#license

Lync 2013 nutzt die Office Web App Services nur, um Powerpoints in einem Meeting zu rendern. Word und Excel kommen gar nicht zum Einsatz.

Windows Voraussetzungen

Ehe Sie die Office Web Companion installieren können, müssen ein paar Voraussetzungen installiert werden. Windows 2008 benötigt noch:

Bei Windows 2012 sind die Module schon dabei. Danach sind noch einige Features einzurichten.

PowerShell bitte als Administrator starten.
Bei Windows 2008R2 müssen Net 4.5 etc. zuerst installiert sein

Bei Windows 2008R2 müssen zuerst die Prerequisites (NET 4.5 etc.)

# Windows 2008R2
import-module Servermanager

Add-WindowsFeature `
Web-Server,`
Web-WebServer,`
Web-Common-Http,`
Web-Static-Content,`
Web-App-Dev,`
Web-Asp-Net,`
Web-Net-Ext,`
Web-ISAPI-Ext,`
Web-ISAPI-Filter,`
Web-Includes,`
Web-Security,`
Web-Windows-Auth,`
Web-Filtering,`
Web-Stat-Compression,`
Web-Dyn-Compression,`
Web-Mgmt-Console,`
Ink-Handwriting,`
IH-Ink-Support

Bei Windows 2012 sind die meisten Komponenten schon Bestandteil und müssen als Features nur noch aktiviert werden:

# Windows 2012
import-module Servermanager

Add-WindowsFeature `
Web-Server, `
Web-Mgmt-Tools, `
Web-Mgmt-Console,`
Web-WebServer,`
Web-Common-Http,`
Web-Default-Doc,`
Web-Static-Content,`
Web-Performance,`
Web-Stat-Compression,`
Web-Dyn-Compression,`
Web-Security,`
Web-Filtering,`
Web-Windows-Auth,`
Web-App-Dev,`
Web-Net-Ext45,`
Web-Asp-Net45,`
Web-ISAPI-Ext,`
Web-ISAPI-Filter,`
Web-Includes,`
InkandHandwritingServices
Add-WindowsFeature `
   Web-Server,`
   Web-Mgmt-Tools,`
   Web-Mgmt-Console,`
   Web-WebServer,`
   Web-Common-Http,`
   Web-Default-Doc,`
   Web-Static-Content,`
   Web-Performance,`
   Web-Stat-Compression,`
   Web-Dyn-Compression,`
   Web-Security,`
   Web-Filtering,`
   Web-Windows-Auth,`
   Web-App-Dev,`
   Web-Net-Ext45,`
   Web-Asp-Net45,`
   Web-ISAPI-Ext,`
   Web-ISAPI-Filter,`
   Web-Includes,`
   InkandHandwritingServices,`
   NET-Framework-Features,`
   NET-Framework-Core,`
   NET-HTTP-Activation,`
   NET-Non-HTTP-Activ,`
   NET-WCF-HTTP-Activation45
# Damit in einer Farm der Status auf "Healthy" geht, muss diese Komponente installiert sein.
Add-WindowsFeature NET-WCF-HTTP-Activation45

Rem Wenn NET3.5 nachträglich entfernt wird, muss .NET 4.0 neu registriert werden
%systemroot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru
iisreset /restart /noforce

Installation OWS

Die eigentliche Installation besteht aus dem Aufruf des Setup, welches Sie von Microsoft herunter laden müssen:

OWC Download (350 MB)
http://www.microsoft.com/en-us/download/details.aspx?id=35489

zzgl. immer auf Updates prüfen. z.B. Office 2013 SP1 Rereleased

Service Pack 1 für Microsoft Office Web Apps Server (KB2880558)
http://www.microsoft.com/en-us/download/details.aspx?id=42547
Achtung: SP1 ist keine Vollinstallation, obwohl das SP1 fast dreimal so groß ist wie RTM
KB2880558

Sicherheitsupdate für Microsoft Office Web Apps Server 2013 (KB2878219)
http://www.microsoft.com/en-us/download/details.aspx?id=42485
MS14-017 Sicherheitsanfälligkeiten in Microsoft Word und Office Web Apps können Remotecodeausführung ermöglichen (2949660) http://technet.microsoft.com/de-de/security/Bulletin/MS14-017
Achtung wenn Office Web App SP1 schon installiert ist: Siehe http://blogs.technet.com/b/office_web_apps_server_2013_support_blog/archive/2014/04/08/how-to-remove-office-web-apps-2013-with-service-pack-1-and-apply-security-update-2878219.aspx

Language Packs für Microsoft Office Web Apps Server
http://www.microsoft.com/en-us/download/details.aspx?id=35490
Aus meiner Sicht nicht für den Einsatz mit Lync relevnant.

  • 2817431 Description of Microsoft Office Web Apps Server 2013 Service Pack 1 (SP1)
  • 2850061 Description of the Outlook 2013 update 2850061: January 14, 2014
  • 2850035 List of all Service Pack 1 (SP1) Updates für Microsoft SharePoint Server 2013 and related server products

Office Web Apps Server: Office Web Apps deployment simplified
http://www.microsoft.com/en-us/download/details.aspx?id=38833

Den Erfolg der Installation sehen Sie eigentlich nur in der Systemsteuerung -Software und im IIS-Manager. Hier sind einige virtuelle Verzeichnisse hinzu gekommen.

Interessant sind hier die beiden Webseiten: Über das Web "HTTP809" kommunizieren die Farmmitglieder miteinander. Und das "defaultWeb ist komplett verschwinden und wurde durch ein "HTTP80"-Web ersetzt, welches von den Clients angesprochen werden kann. Die Namen der Verzeichnisse geben auch einen Hinweis, welche Dienste darunter zu erreichen sind.

  • X=Excel
  • O = OneNote
  • P=Powerpoint
  • M = Powerpoint Meeting
  • WV = Wordviewer
  • WE = Word Editor

Wer also einen OWC-Server aus dem Internet erreichbar machen will, muss nicht die komplette Webseite veröffentlichen, sondern kann explizit die Verzeichnisse freigeben, was natürlich eine Verbesserung bei der Absicherung bewirkt.

Zertifikat

Ich rate dringend dazu, die Zugriffe auf den OWC-Server per HTTPS durchzuführen. Entsprechend ist ein Zertifikat erforderlich, welches natürlich ein internes Zertifikat sein kann. Im Lync Topologiebuilder wird z.B. der interne Name eingetragen.

Ich hoffe nicht, dass Sie den OWC-Server direkt per NAT aus dem Internet erreichbar machen wollen und dass Sie natürlich zwischen dem Internet und dem Server einen Reverse Proxy betreiben oder sogar einen Loadbalancer für mehrere OWC-Server.

Dann stellt sich die Frage nach dem externen Zertifikat. Hier ist natürlich ein "öffentliches" Zertifikat einer vertrauenswürdigen Root-CA vorzusehen. Speziell wenn Sie in ihrem Meeting auch externe Teilnehmer erwarten. Der Name für diesen von Extern erreichbaren WebService müssen Sie ebenfalls vorgeben und später in der OWC-Konfiguration hinterlegen. Er wird aber nicht in der Lync Topologie eingetragen. Die Lync Server fragen diesen Wert vom OWC-Server später per HTTP ab. Idealerweise installieren Sie daher zwei Zertifikate:

  • Internes Zertifikat
    Ein von der internen CA ausgestelltes Zertifikat auf den FQDN des Servers bzw. des Pools. Wenn sie keine eigene CA nutzen und der Name auf eine offizielle DNS-Domäne endet, können Sie auch ein öffentliches Zertifikat kaufen.
  • Externes Zertifikat
    Ein Zertifikat von einer offiziellen CA, welches idealerweise auf einem Reverse Proxy installiert wird.

Konfiguration

Die Installation ist aber erst der halbe Weg. Speziell wenn sie mehrere Server in einer Farm betreiben, müssen Sie per PowerShell noch ein paar Einstellungen durchführen. Diese Parameter werden auf dem Server hinterlegt und können von Clients abgerufen werden.

Hinweis:
Auch wenn Sie nur einen einzelnen Server betreiben, sollten sie besser mit "virtuellen Namen" arbeiten. Das kostet Sie nur einen weiteren DNS-Eintrag und Namen im internen Zertifikat. Aber später können Sie einfach einen zweiten Server hinzufügen oder migrieren.

Achtung
Die PowerShell muss "Als Administrator" gestartet werden.

# OWC Module laden (eventuell erst nach Neustart moeglich
Import-Module OfficeWebApps

Zuerst erstellen wir z.B. eine Farm:

New-OfficeWebAppsFarm `
   -InternalURL "http://ows.msxfaq.intern" `
   -AllowHttp `
   -EditingEnabled:$False

Wenn der Server auch aus dem Internet erreichbar ist, dann sollten Sie auch die "ExernaltURL"

New-OfficeWebAppsFarm `
    -InternalURL "https://ows.msxfaq.intern" `
    -ExternalURL "https://ows.msxfaq.de" `
    -EditingEnabled:$false `
    -SSLOffloaded

Hinweis
Dokumentieren Sie diese Aufrufe. Sie werden Sie später bei Updates wieder benötigen.
Wenn Sie die Funktion "EditingEnabled" aktivieren, dann müssen Sie entsprechende Lizenzen besitzen !

Die erfolgreiche Bereitstellung können Sie einfach über einen Browser testen. Über folgende URL sollten Sie dann die WOPI-XML sehen (Wen Open Platform Interface.

https://<wacserverfqdn>/hosting/discovery

Sollte diese Information nicht kommen, dann könnte es ein, dass sie das .NET Framework vor dem IIS installiert haben und daher das Framework nicht korrekt gebunden ist. Folgende Zeile korrigiert die Konfiguration.

REM NET Framework anpassen
c:\windows\microsoft.net\framework\v4.0.30319\aspnet_regiis.exe -ir

REM IIS neu starten, um die Änderung aktiv zu werden
IISRESET

Office Web Apps aktualisieren

Der Dienst ist ein Teil der Office Serie und wird wie die Office Programme ab und an per update versorgt. Im Gegensatz zu vielen anderen Diensten darf der Office Web App Server aber nicht über Windows Update oder WSUS installiert werden, auch wenn die Updates sogar per WU verteilt und angeboten werden. Sogar als "Farm-Version":

Aber schon die doppelte Anzeige des gleichen Updates sollte Sie skeptisch machen. Wer seinen Office Web App Server so einfach aktualisiert, hat am Ende eher eine defekte Installation, die nur noch durch eine komplette Deinstallation und Neuaufbau wieder hergestellt werden kann. Das ist ein offenes und dokumentiertes Verhalten !

Applying Office Web Apps Server Updates by using the automatic Updates process isn’t supported with Office Web Apps Server. This is because Updates to an Office Web Apps Server must be applied in a specific way, as described in this article. If Office Web Apps Server Updates are applied automatically, users may be unable to view or edit documents in Office Web Apps. If this happens, you have to rebuild your Office Web Apps Server farm. To rebuild a farm, you must remove the Office Web Apps Server from the farm by using Remove-OfficeWebAppsMachine, uninstall Office Web Apps Server by using Add or remove programs, and then reinstall Office Web Apps Server by following the steps that are described in Deploy Office Web Apps Server. After you have reinstalled, apply the update by following the steps that are described in this article.
Quelle: https://technet.microsoft.com/en-us/library/jj966220(v=office.15).aspx

Neben Servern, die nach so einem AutoUpdate nicht mehr funktionierten, hatte ich auch schon den Fall, dass der Server permanent auf 100% CPU-last lief, was so manche VM-Plattform gestört hat.   

Der richtige Weg ist die manuelle Installation, bei der vor Farm-Mitglieder erst aus der Farm entfernt werden

Remove-OfficeWebAppsMachine

Dann aktualisiert werden und das neue Mitglied dann eine neue Farm startet. Es ist daher von Vorteil, wenn Sie damals bei der Einrichtung und späteren Änderung der Konfiguration die Parameter entsprechend dokumentiert oder am Besten direkt als PowerShell-Befehle abgelegt haben. Dann verliert so ein Abriss/Neuaufbau den Schrecken.

New-OfficeWebAppsFarm -InternalURL "http://webapps.msxfaq.net"

Weitere Server werden dann auch wieder aus ihrer alten Farm entfernt, aktualisiert und dann in die neue Farm aufgenommen:

New-OfficeWebAppsMachine -MachineToJoin "webapps01.msxfaq.net"

Wenn nach dem update die CPU-Last einige Minuten auf 100% ist, dann ist das noch kein Grund zur Sorge. Der .NET Optimizer kompiliert im Hintergrund die neu installierten Komponenten für das Zielsystem, damit diese nicht beim ersten Zugriff "on the fly" kompiliert werden müssen. Das kann durchaus etwas dauern.

OWC absichern

Dieser Abschnitt ist wichtig für Firmen, die einen Office Web App Server aus dem Internet erreichbar machen. Das gilt quasi für alle Lync 2013 Firmen.

Der Office Web App Server agiert als "Middleware", über die ein Client Dokumente und Informationen von einem Backend Server beziehen, als HTML aufbereiten und dann auf dem Client anzeigen kann. Welche Quelle im Backend bezogen wird gibt der Client über die Parameter in der URL vor. Es ist damit also nicht nur theoretisch denkbar, dass ein Anwender indirekt damit auf Informationen und Dokumente zugreift, die ansonsten nie aus dem Internet erreichbar wären.

Auf dem Bild wird das noch mal deutlich, dass der Client über den OWC-Server im ungünstigsten Fall Daten aus dem Internet per HTTP einladen kann oder auf interne Server zugreifen kann, die gar nicht erreichbar sein sollen.

Sie müssen daher ihren OfficeWebApp Server absichern, z.B. indem er nur die gewünschten Ziele erreichen kann. Das kann man per Firewall steuern aber besser ist gleich die originäre Konfiguration der OfficeWebApp-Hosts per PowerShell. Sie können dem OfficeWebAppServer nämlich vorgehen, welche BackendServer er erreichen darf.

New-OfficeWebAppsHost `
   -domain "netatwork.de"

Logging

Die OfficeWebApps-Services haben per Default ein Logging aktiv. Sie können an mehreren Stellen die Funktion überwachen und analysieren:

  • Performancecounter
    Hierrüber erhalten sie zumindest numerisch schon einen Überblick der Nutzung.
  • IIS-Logs
    Da alle Zugriffe immer über den IIS laufen, sehen Sie hier natürlich auch die Clients, die OfficeWebApps nutzen.
  • OfficeWebAppLogs
    Zusätzlich protokollieren die OfficeWebApps sehr umfangreich auch ihre Tätigkeit in eigenen Logs

Genau diese letzte Stelle ist natürlich auch wieder eine latente Gefahr für die Festplattenkapazität ihres Servers. Glücklicherweise hat Microsoft dem Server auch eine "Aufräumfunktion" spendiert.

PS C:\Windows\system32> get-OfficeWebAppsFarm | fl log*

LogLocation   : C:\ProgramData\Microsoft\OfficeWebApps\Data\Logs\ULS
LogRetentionInDays : 7
LogVerbosity  :

Nach 7 Tagen werden die Logs auch wieder entfernt.

OWC Monitoring

Natürlich hat der OfficeWeb App Server umfangreiche Performance Counter und Eventlogs. Besser und vom Betriebssystem unabhängig ist aber direkt der Aufruf auf die URLs. Der Office WebApp Server stellt davon einige bereit. Wenn Sie die WebApp-URL einer Firma können, können Sie z.B. eingeben:

Das Ergebnis sollte einfach eine Datei sein, in der "TRUE" steht. Entsprechend einfach kann das mit PowerShell überprüft werden.

Invoke-WebRequest https://owc.netatwork.de/m/met/participant.svc/jsonAnonymous/BroadcastPing

Sie sollten dann folgende Ausgabe bekommen, aus der Sie den 200OK aber auch den "Content" sehen und damit prüfen können.

Diese URL ist natürlich optimal für Loadbalancer, um die Erreichbarkeit eines Servers zu überprüfen.

Wenn Sie auf der PowerShell sind, dann können Sie natürlich auch den "Health-Status" des Servers abfragen.

# Anzeige des Status der lokalen Maschine
(Get-OfficeWebAppsMachine).healthstatus

Wenn alles richtig ist, dann ist hier der Status ein "Healthy"

Lync und OWC-Hinweise

Genau diese URL fragt auch der Lync Server 2013 ab und erhält so die URLs, die er dem Client mitgeben muss. Wurde der OWC-Server nach der Bereitstellung von Lync installiert, dann kann ein Neustart des Lync Diensts helfen, um die aktuelle Konfiguration neu einzulesen.

Restart-Service rtcdatamcu

Auch das Eventlog ist hier eine interessante Quelle, in der Lync eventuelle Fehler protokolliert:

Log Name: Lync Server
Source:   LS Data MCU
Event ID: 41033
Task Category: (1018)
Level:    Error
Keywords: Classic
Computer: FE1.lync2013.local
Description:
Office Web Apps Server (WAC) discovery failed, PowerPoint content is disabled.

Attempted Office Web Apps Server discovery URL: https://wac.lync2013.local/hosting/discovery/
Received error message: No connection could be made because the target machine actively refused it 10.0.0.70:443
The number of retries: 10, since 09/15/2012 7:46:41 AM.
Cause: Office Web Apps Server may be unavailable or network connectivity may have been compromised.
Resolution:
Check HTTPS connectivity from this box to the Office Web Apps Server deployment using the discovery URL.

Sobald die Konfiguration erfolgreich war, sollten Sie beim Start der DataMCU einen Eventlog-Eintrag finden, der die WAC-Konfiguration wiedergibt:

Log Name: Lync Server
Source:   LS Data MCU
Event ID: 41032
Task Category: (1018)
Level:    Information
Keywords: Classic
Computer: LSFE02.lync2013.local
Description:
Web Conferencing Server Office Web Apps Server (WAC) discovery has succeeded

Office Web Apps Server internal presenter page: https://owc01.msxfaq.de/m/Presenter.aspx?a=0&e=true&
Office Web Apps Server internal attendee page: https://owc01.msxfaq.de/m/ParticipantFrame.aspx?a=0&e=true&
Office Web Apps Server external presenter page: https://owc.msxfaq.de/m/Presenter.aspx?a=0&e=true&
Office Web Apps Server external attendee page: https://owc.msxfaq.de/m/ParticipantFrame.aspx?a=0&e=true&

Dieser Eintrag bestätigt dass zumindest der Lync Server auf den OWC-Dienst erfolgreich zugreifen kann. Kontrollieren Sie hier die URLs, damit sich kein Tippfehler eingeschlichen hat.

Office Web App und Videos

Mit Lync 2013 als Client und Powerpoint 2013 ist es möglich, auch Videos in einer PowerPoint in einem Lync Meeting abzuspielen. Dazu muss das Video in Powerpoint 2013 aber "erst "optimieren".

Erst dann ist das in der PPTX eingebettete Video in einem Format, so dass diese in ein Lync Meeting hochgeladen und von den Client betrachtet werden kann.

Achtung: Der OfficeWebApp Server rendert das Video für jeden Teilnehmer und überträgt es per Unicast TCP. Es ist also weder UDP noch ein Multicast und belastet daher je nach Anzahl der Teilnehmer das Netzwerk aber auch den OfficeWebApp-Server.

Exchange 2013 und WAC

Auch Exchange 2013 benutzt z.B. mit OWA die Office Web Components, um Anlagen darzustellen. Auch in Exchange muss daher diese URL "veröffentlich" werden. Ansonsten finden Sie folgenden Fehler.

Log Name: Application
Source:   MSExchange OWA
Date:6/7/2013 12:01:38 PM
Event ID: 139
Task Category: (10)
Level:    Error
Keywords: Classic user:N/A
Computer: NAWEX13.netatwork.de
Description:
There was an error setting up WacConfiguration. Wac will be disabled and we will fall
back to stellent. The WacURLHostName was invalid. Expected a valid uri.
Actual value was ''. Value read from 'OrganizationConfig'

Maßgeblich für die Konfiguration sind die folgenden Einstellungen

Set-OrganizationConfig `
   -WACDiscoveryEndPoint http:///wacfarm/discovery
Set-OWAVirtualDirectory `
   -WacViewingOnPublicComputersEnabled $true `
   -WacViewingOnPrivateComputersEnabled $true `
   -identity OWA virtual directory identity

Damit wird der Exchange Organisation mitgeteilt, wo es diesen Service gibt. Der Exchange Server holt sich dann schon selbst die weiteren Daten.

Sharepoint 2013 und WAC

Der richtig große Nutzer der Office Web Components ist natürlich Sharepoint 2013. Auch dieser Service nutzt OWC aber nicht nur um Dokumente anzuzeigen, sondern auch um dem Anwender die Option zu geben, Inhalte im Browser zu editieren.

Fileshare und Webseiten und WAC

Meine bisherigen Beschreibungen haben sich auf Lync bezogen, der mittels dem OfficeWebApp Server die PowerPoints eines Meeting in HTML-Content zur Anzeige bereit stellt. Der OfficeWebApp Server kann aber noch mehr: Exchange 2013 OWA nutzt ihn um Anlagen anzuzeigen und SharePoint 2013 sogar zum Editieren von Dokumenten. Da stellt sich natürlich die Frage, ob Anwender auch Dokumente mittels dem OfficeWebApp Server von einem Dateiserver öffnen können.

Und tatsächlich gibt es eine Funktion, mit der ein OfficeWebApp Server zum Zugriff auf andere WebServer und sogar SMB-Freigaben genutzt werden kann. Allerdings sind diese beiden Optionen per Default nicht freigegeben.

Beide Links funktionieren, wobei der erste den Client dann auf den zweiten Link verweist

Hinweis:
Dieser direkte Zugriff per per Default deaktiviert und muss auf der Farm erst aktiviert werden. Vorher kommt eine wenig aussagekräftige Fehlermeldung.

Aber im Eventlog findet sich nichts und selbst in den OWC-Logs ist es nicht einfach die Ursache hierzu zu finden.

Set-OfficeWebAppsFarm -OpenFromURLEnabled

Get-OfficeWebAppsFarm | fl open*


OpenFromURLEnabled : True
OpenFromUNCEnabled : True
OpenFromURLThrottlingEnabled : True

Dann hingegen bekommt der Anwender sogar ein Webformular zu sehen:

Sie können also jede Datei, auf die Sie Zugriff haben, auch über diesen Weg direkt erreichen. Sollte der Zugriff nicht möglich sind, können Sie im Logging einfach den Fehler finden. Hier ein Beispiel:

07/24/2013 16:59:03.62 	w3wp.exe (0x1A5C)   0x2418 Office Web Apps Open From URL Medium Could not find file in cache 
   [\\server\share\dir\test.doc]: [Disk Cache File Not Found]
07/24/2013 16:59:03.65 	w3wp.exe (0x1A5C)   0x2418 Office Web Apps Open From URL Medium Begining UNC Download für [\\server\share\dir\test.doc]
07/24/2013 16:59:03.90 	w3wp.exe (0x1A5C)   0x2418 Office Web Apps Open From URL Medium FileNotFound für \\server\share\dir\test.doc]: 
   [System.UnauthorizedAccessException: Access to the path 
   '\\server\share\dir\test.doc' is denied.at System.IO.__Error.WinIOError(Int32 errorCode, String 
   maybeFullPath)at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, 
   Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, 
   SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean 
   checkHost)at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share,
    Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)at Syste...	
07/24/2013 16:59:03.90*	w3wp.exe (0x1A5C)   0x2418 Office Web Apps Open From URL Medium ...m.IO.FileStream
   ..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions 
   options)at Microsoft.Office.Web.FileFetch.UNCDownloader.BeginUNCDownload(AsyncCallback callback, Object state)]

Schneidet man den Versuch im NETMON mit, dann sieht man sehr gut, dass der OfficeWebApp-Server versucht per SMB die Datei zu öffnen aber "anonym" darauf zugreift.

Das wird natürlich nicht so einfach funktionieren. Per Default startet der Office Web App-Service als "Local System".

Für die Funktion mit Lync ist es nicht relevant, dass hier eine Impersonation erfolgt. Will man OWC aber als Zugriff auf Dateiserver verwenden, muss man sich etwas überlegen. Aktuell habe ich noch keine Quellen gefunden, wie OWC per Impersonate mit den Rechten des Anwender auf die gewünschte Ressource zugreifen kann, speziell wenn die Daten auf einem entfernten Server liegen. Denkbar wäre Kerberos Contraint Delegation oder "Basic Auth". Andere Verfahren funktionieren nur, wenn die Daten auf "Localhost" liege.

Vermeiden Sie unbedingt, dass Sie "System" oder "Jeder" die Rechte zum Zugriff auf Ressourcen einräumen. Sie würden damit jede Zugriffskontrolle umgehen und wenn die OfficeWebAps aus dem Internet erreichbar sind, könnte jemand diesen Weg als Art "Reverse Proxy" für Office-Dokumente nutzen.

Reverse Proxy /TMG

Wer seine Webserver liebt, stellt sie nicht mit einem Bein ins Internet oder veröffentlicht sie einfach per NAT, sondern erlaubt den Zugriff über einen Reverse Proxy. Mittlerweile hat Microsoft das "Thread Management Gateway (TMG)" leider abgekündigt aber es gibt sicher noch viele Installationen. Zudem ist es immer noch eine gute Basis zum beschreiben. Sie können aber natürlich auch jeden anderen Reverse Proxy verwenden.

OWC ist eine "normale Webveröffentlichung", die über den TMG Assistenten eingerichtet werden kann. Wenn Sie weiter oben die URLs gemerkt haben, dann müssen Sie nicht den ganzen Webserver sondern sogar nur die einzelnen Verzeichnisse veröffentlichen, was die Sicherheit weiter erhöht.

Allerdings nutzt OWC einige sehr lange URLs, die TMG per Default gar nicht mag, wie sie im Log sehen können

Die Lösung besteht darin, im HTTPS-Filter die Nomalization abzuschalten.

Microsoft empfiehl zwar nicht das Abschalten, aber in bestimmten Situationen ist das "%" Zeichen eben doch legitim.

Verify normalization to block requests with URLs containing escaped characters after normalization. Web servers receive requests that are URL encoded. This means that certain characters may be replaced with a percent sign (%) followed by a particular number. für example, %20 corresponds to a space, so a request für http://myserver/My%20Dir/My%20File.htm is the same as a request für http://myserver/My Dir/My File.htm. Normalization is the process of decoding URL-encoded requests. Because the % can be URL encoded, an attacker can submit a carefully crafted request to a server that is basically double-encoded. If this occurs, Internet Information Services (IIS) may accept a request that it would otherwise reject as not valid. When you select Verify Normalization, the HTTP filter normalizes the URL two times. If the URL after the first normalization is different from the URL after the second normalization, the filter rejects the request. This prevents attacks that rely on double-encoded requests. Note that while we recommend that you use the Verify Normalization function, it may also block legitimate requests that contain a %.

Quelle: Configuring HTTP filtering http://technet.microsoft.com/en-us/library/cc995081.aspx

Vielen ist vielleicht die Firma "KEMP" mit ihren Loadbalancern bekannt, die mit dem Wegfall von TMG den Loadbalancer mit einem Reverse-Proxy ausgestattet hat. Auch hier gibt es eine EinstellMöglichkeit nach "bösen" URLs zu suchen. Diese Einstellung scheint auch die OfficeWebApp-Services zu stören.

Funktionstest

Sie können aber auch mit einem Browser den ein oder anderen Test einfach durchführen. Dabei gibt es drei Stellen zum Testen:

  • Intern gegen die interne Webseite
    Das muss problemlos funktionieren, damit interne Clients arbeiten
  • Intern gegen die Externe Webseite
    Diese Anfragen werden so normal nicht benötigt. Sie sind aber ein test um die Erreichbarkeit der "external Websites" zu überprüfen und hier Probleme zu erkennen.
  • Extern gegen die Externe Webseite
    Dies ist dann von extern auf jede Lync Installation, zu der man die ExternalURLs kennt, möglich. Sie hilft bei der Fehlersuche beim Reverse-Proxy und Firewall

Folgende URLs nutze ich gerne, wobei diese natürlich abhängig von ihrem Namenskonzept für die SimpleURL zu sehen sind. Die Adressen sind sowohl von intern als auch von Extern erreichbar sein

URL Ergebnis Status
/hosting/discovery Liefert die XML-Information über die angebotenen Dienste  
/hosting/discovery Liefert die XML-Information über die angebotenen Dienste  
/m/met/participant.svc/jsonAnonymous/BroadcastPing Liefert eine JSON-Datei  
Office URL Wer sich mittels dem Weg "fileshare_und_webseiten_und_wac" Eine URL besorgt, kann sogar das Rendering noch genauer prüfen.  

Die Ausgabe sieht in etwas wie folgt aus, wenn Sie die Tree's etwas einklappen:

Man kann daraus ein Stück weit erkennen, wie die internen Servernamen heißen. Das ist vielleicht nicht schön aber Sicherheit durch "verbergen" ist eh eine zweifelhafte Methode, wenngleich sie natürlich schon den Zugriff erschwert.

Abruf der URL per Powershell - Muss 200 liefern
Invoke-WebRequest https://wac.msxfaq.net/m/met/participant.svc/jsonAnonymous/BroadcastPing

# Wer mags kann die Version ermitteln
(Invoke-WebRequest https://owc.msxfaq.net/m/met/participant.svc/jsonAn onymous/BroadcastPing).headers."x-officeversion" 15.0.4805.1000 

Liefert im Normalfall einen 200OK:

Bei Lync 2013 sind auch die LyncWeb für Zugriffe relevant.

# Erforderlich, damit der "Health-Status" auf "healthy geht
Add-WindowsFeature NET-WCF-HTTP-Activation45

Debugging

Es ist relativ einfach, Fehler beim Einsatz von Office Web App zu analysieren, denn es gibt eine ganze Menge von Stellen, an denen man nachschauen kann

  • Client-Zugriffe mit Fiddler
    Wenn ein Client auf den Office Web App Server zugreift, dann erfolgt dies per HTTP/HTTPS. Damit ist Fiddler mein erstes Hilfsmittel, um einen Fehler ohne Mithilfe des Servers einzukreisen. Bei Skype for Business kann so z.B. erkannt werden, wie sich URL für den Zugriff gebildet wird und wie der Fehlercode des Servers aussieht.
  • Skype for Business Eventlog
    Der Frontend Server spricht die /hosting/discovery-URL an, um die Konfiguration des Office Web App Servers zu lesen. Wenn dies nicht klappt, dann finden Sie zuverlässig einen passenden Eventlog-Eintrag. 41033 der "LS Data MCU"
  • WAC IIS-Logs
    Die Zugriffe des Clients müssen natürlich auch auf dem Server zu sehen sein. Wenn dort nichts ankommt, dann kann ein Reverseproxy oder der Loadbalancer davor z.B. die Ursache sein.
  • WAC ULS-Logs
    Der WAC-Server protokolliert Fehler in einem lokalen Verzeichnis. Schauen Sie einfach mal auf dem WAC-Server als Administrator in das Verzeichnis "C:\ProgramData\Microsoft\OfficeWebApps\Data\Logs\ULS". Hier sollte es bei Problemen entsprechende "Logdateien" geben, die ihnen einen Hinweis auf den Fehler geben.
  • Skype for Business IIS-Logs
    Der Office Web App Server greift bei Skype for Business ebenfalls per HTTPS auf die Webseite des Pools zu, um die Daten vom Fileshare zu erhalten. Auch diese Zugriffe müssen auf dem Skype for Business Server sichtbar sein.

In der Regel können Sie alle Probleme des OWC-Servers schon beseitigen.

Update

Der Office Web App Server ist ein Webserver, der ohne Authentifizierung von intern und aus dem Internet erreichbar ist. Daher sollten Sie genau beobachten, wann es Updates gibt und diese zügig einspielen. Genau genommen ist der Office Web App Server ein "Office im Browser", also quasi ein aus der Ferne bedienbarer Client.

Ich versuche die Liste analog zu den Listen auf Lync Updates und Exchange Buildnummern zu pflegen. Bei den meisten Firmen obliegt die Pflege des Office Web App Server aber der Sharepoint Abteilung, so dass ich nicht immer alle Versionen hier aufgeführt habe

Release-Datum

Paket

13. Okt 15

Security Update für Office Web App Server

  • 3085571 MS15-110: Description of the security update für Office Web Apps Server 2013: October 13, 2015

Security Update für Microsoft Office Web Apps Server 2013 (KB3085571)
https://www.microsoft.com/en-us/download/details.aspx?id=49328

8. Sep 15 3085487 MS15-099: Description of the security update für Office Web Apps Server 2013: September 8, 2015
12 Aug 14 2883057 August 12, 2014 update für Office Web Apps Server 2013
13. Mai 14
  • 2880453 MS14-022: Description of the security update für Office Web Apps Server 2013: May 13, 2014
4. Aug 14
12. Nov 13

Kein direktes Lync update aber Lync 2013 nutzt für Powerpoints in Meetings den WAC Server und damit ist das update schon relevant für den Betrieb von Lync 2013 Servern.

Einziger aber wichtiger Fix: "Assume that you have Internet Explorer 11 installed. When you try to share a presentation in a Microsoft Lync meeting in Lync 2013, the share attempt fails."

Achtung: Sie dürfen den OfficeWebApp Server nicht einfach per „Setup“ oder das per Windows Update angebotene Update aktualisieren.

Statt dessen muss man der Reihenfolge auf „Apply software Updates to Office Web Apps Server” ( http://technet.microsoft.com/en-us/library/jj966220.aspx) folgen. Ich habe die Reihenfolge bei meinem eigenen OWC Server auch nicht beachtet und danach war OWC nur nicht mehr nutzbar. Auch die CPU-Last der VM war auf 100%, da bestimmte Prozesse anscheinend immer einen Dr. Watson verursacht, beendet und neu gestartet wurden. Manchmal kommt Windows update auch ganz aus dem Tritt:

Insofern ist es immer besser die Updates manuell herunter zu laden und nach der Anleitung zu installieren. Aber auch nach der Installation kann die CPU einige Minuten auf 100% sein, weil der .NET-Compiler die neuen Datei noch übersetzt. Geduld ist hier gefragt. 

Anleitung für einen Single Server

  1. Get-OfficeWebAppsFarm
    und sich die relevanten Parameter raus kopieren, speziell z.B. die InternalURL/ExternalURL
  2. Remove-OfficeWebAppsMachine
  3. Update installieren
  4. OfficeWebApp Farm wieder einrichten, z.B.

New-OfficeWebAppsFarm
-InternalURL https://nawowc001.msxfaq.de/  `
-ExternalURL https://owc.nsxfaq.de/ `
-CertificateName "OWC Certificate Name"

Hier noch ein paar andere Links:

Weitere Links

Guide für IT Pros für Microsoft Office Web Apps
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=515dd67e-3ff6-4f0d-bc45-cfc8ba742055

Microsoft Office Web Apps Product Guide
http://download.microsoft.com/download/2/6/2/26253C22-D8EC-4230-A3ED-E2DEED9E8EBE/Microsoft%20Office%20Web%20Apps%20Product%20Guide_Final.pdf

Office Web Apps Architecture & Deployment
http://channel9.msdn.com/Events/TechEd/Europe/2010/OFS223