Microsoft hat mit SharePoint 2013 das neue App Modell bzw., Add-In Modell eingeführt (Mit SharePoint 2013 heißt es App Modell, ab 2016 ist alles ein Add-In). Es ist ja kein Geheimnis, dass es in SharePoint immer Anpassungen gibt. Es gibt viele Anbieter auf dem Markt, die ihre Lösungen dafür anbieten. Das App Modell bietet eine neue API für Softwareentwickler. Aber was für eine API gab es davor?
- Full Trust Solutions aka .wsp Dateien
- Sandboxed Solution (abgekündigt)
Warum die neue API und was bietet Sie für Vorteile? Was ändert sich für Softwareentwickler, was für Administratoren und welche Schritte sind notwendig, um die Voraussetzungen zu erfüllen? Diese Fragen werde ich in diesem Artikel beantworten.
Architektur
Es gibt zwei unterschiedliche Add-In Modelle:
- Provider Hosted App: Apps werden durch einen Provider zur Verfügung gestellt, z.B. ich füge eine App direkt aus dem SharePoint Store hinzu
- SharePoint Hosted App: Die App wird selbst auf einem eigenen Server gehostet, z.B. im einfachsten Fall reicht es die App im Unternehmens App Store hinzuzufügen. Es kann auch nötig sein, weitere Komponenten wie IIS einzurichten – abhängig von der App.
Im Vergleich aus Entwickler-Sicht
Das folgende Bild App Patterns zeigt was ist wo unterstützt wird. Weitere Details gibt es auch auf MSDN https://msdn.microsoft.com/en-us/library/office/fp179930.aspx#sectionSection2 : Die größte Änderung der API ist, dass die Applikationen nicht mehr im Kontext von SharePoint laufen, das soll Stabilität und Migrationen erleichtern. Außerdem ist die API Cloud kompatibel.
Prozess im Hintergrund
- App mit Lizenzprüfung entwickeln
- App über Seller Dashboard in den Marketplace einstellen
- App zum Kauf im SharePoint Store verfügbar
- Benutzer / Manager kauft App im SharePoint Store
Bei on-premises Umgebungen, wird die Lizenzinformation in die lokale App Dienstanwendung kopiert - Apps können den SharePoint Store umgehen, z.B. für selbst gehostete Entwicklungen
- Benutzer / Manager weist Benutzer zu (wird für Benutzerabhängige Lizenzen benötigt) und verwendet die Apps die entweder Provider Hosted oder SharePoint hosted sind
- Benutzer startet App
App prüft Lizenz unter Verwendung der App Dienstanwendung
App wendet Lizenz an
- Benutzer fordert App an
- Anforderung wir an Dienstanwendung weitergeleitet
- Lizenz und Berechtigungen werden in aus der Datenbank geholt
- App Freigabe im Unternehmens-App-Store
Bei vielen Apps kann man das auch sehen. Beim Klick auf eine App wird man entsprechend weitergeleitet. Als Beispiel können wir uns hier die Cloud ansehen, achten Sie dabei genau auf die URL: Damit wird deutlich, dass die App tatsächlich nicht im SharePoint läuft, sondern außerhalb und ich lediglich weitergeleitet werde. On-Premises ist die Funktionsweise die Gleiche, jedoch müssen wir die Infrastruktur erst noch vorbereiten, das zeige ich in den nächsten Schritten.
App Domain
Beim Klick auf eine App werden wir ja entsprechend weitergeleitet. Damit dies funktioniert, benötigen wir eine eigene Domain, in der die Apps laufen. Der Prefix wird dabei dynamisch generiert, d.h. wir werden hier auch mit einer Wildcard arbeiten. Microsoft empfiehlt dringend eine separate Domain zu verwenden, um das Risiko von Cross-Site-Scripting Angriffe zu minimieren. Beispiel:
- Ihre interne Domain (typischerweise Active Directory) heißt contoso.com (Netbios Name spielt keine Rolle, es geht rein um den DNS Namen).
- Der SharePoint on-premises ist unter dem DNS Namen SP-WFE01.contoso.com zu erreichen.
- Erstellen Sie eine eigene Domain wie contosoApps.com (idealerweise offiziell registriert)
- Eine App wird später dynamisch eine URL im Format generieren https://Apps-12345678ABCDEF.ContosoApps.com/
Konfiguration
Einrichtung DNS
Auf dem DNS Server muss die neue Domain als eigene Zone eingerichtet werden, z.B. Name der Zone = Name der Domain „contosoapps.com“ In dieser Zone erstellen wir einen CNAME Record „*“ mit dem Ziel des SharePoint Servers, hier SP-WFE01.contoso.com (Achtung in Verbindung mit Kerberos, der mag CNAME nicht).
Wildcard Zertifikat
Damit wir später auch eine verschlüsselte Verbindung zwischen der App und SharePoint aufbauen können, benötigen wir für die Apps ein Wildcard SSL-Zertifikat. Ein Wildcard SSL-Zertifikat kann man ausstellen, indem man als CN (Common Name) *.contosoapp.com angibt, der * wird als Wildcard verwendet. Idealerweise ist der Zugriff zu SharePoint auch per SSL gesichert, damit vermeidet man auch SSL Bridging Warnungen vom Browser.
Service Instanz starten
In SharePoint 2013 muss man das noch manuell starten, 2016 erledigt das automatisch. In der Central Admin – „Manage Services on Server“ oder per PowerShell müssen die folgenden Instanzen gestartet werden:
- App Management Service
- SP Subscription Settings Service
001 | Get-SPServiceInstance | where{$_.GetType().Name -eq „AppManagementServiceInstance“ -or $_.GetType().Name -eq „SPSubscriptionSettingsServiceInstance“} | Start-SPServiceInstance |
Anschließend sollte der Status auf „Started“ stehen:
Service Application erstellen
Als nächstes erstellen wir die Dienstanwendungen, damit diese in der Farm angeboten werden können, auch das geht per Central Admin – „Manage Service Applications“ oder per Powershell:
App Management Service
001 002 003 004 | $account = Get-SPManagedAccount FarmAccount $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account $appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName P_SP_AppMngmt $proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc |
SP Subscription Settings Service
001 002 003 | $AppPool = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account $App = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPool -Name SettingsServiceApp -DatabaseName SettingsServiceDB $proxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $App |
Ein vorbereitetes PowerShell Skript finden Sie auf meiner Download Seite. Es startet die Service Instanzen, legt die Service Applications an und konfiguriert die App Domain. Einfach in Zeile #23 den Namen des Service Accounts anpassen (Den muss es bereits vorher geben). http://download.hobmaier.net/Downloads/Install-AppMngmt.ps1 Bzw. hier:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 | <# ===================================== This PowerShell Script help you setting up App Management Service in SharePoint. It will start the service instances and create Serivce Applications. Version 1.1 25.01.2016 Dennis Hobmaier ——————– History 1.1, 25.01.2016 More variables to change service accounts and database names Comments added 1.0, 28.11.2015 Intial Version ===================================== #> # Please adjust the account which exist in your environment. #Needs to run on SharePoint Server #Start the service instance on the current server (min 1 per farm) #You may check all available accounts running Get-SPManagedAccount $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account $AppPool = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account # Configure App Settings |
App Settings
Anschließend öffnen wir die SharePoint Central Admin
App Domain aus Schritt 1 konfigurieren
Falls nicht schon per Skript oben ausgeführt:
001 002 | Set-SPAppDomain „contosoapp.com“ Set-SPAppSiteSubscriptionName -Name „app“ -Confirm:$false |
App Catalog erstellen (pro Web Application)
- Manage App Catalog
- Webanwendung auswählen – OK
- Es handelt sich um eine normale Websitesammlung, die eine bestimmte Vorlage verwendet. Achten Sie darauf, dass später nur App-Store Administratoren Zugriff darauf benötigen.
App hochladen (je nach App)
Grundsätzlich befolgen Sie der Anleitung des Herstellers. Wenn Sie dazu aufgefordert werden, deine .app Datei hochzuladen, öffnen Sie den zuvor erstellten App Store – „Apps for SharePoint“ und laden dort diese Datei hoch.
App installieren (je nach App)
Anschließend steht Ihren Benutzern die App zur Verfügung. Als Administrator fügen Sie die App der Ziel Websitesammlung hinzu. Übrigens sollen Sie mindestens Service Pack 1 für SharePoint 2013 verwenden. In dem Add-In Modell hat sich zwischen RTM und SP1 einiges getan.
Referenz
- Plan app for SharePoint 2013: https://technet.microsoft.com/en-us/library/fp161237.aspx
- Configure an environment for apps for SharePoint (SharePoint 2013) https://technet.microsoft.com/en-us/library/fp161236.aspx
- MVA: https://channel9.msdn.com/Series/Deep-Dive-into-the-Office-365-App-Model/06
- App Patterns: https://www.youtube.com/watch?v=urtICF4AAyo
- SPSubscriptionsSettingsService: https://technet.microsoft.com/en-us/library/ff607823.aspx
- MSDN: Two types of SharePointAdd-ins: SharePoint-hosted and provider-hosted https://msdn.microsoft.com/en-us/library/office/fp179930.aspx#sectionSection2
- Webcast Aufzeichnung zu diesem Thema “Mobile Anwendung ganz groß” mit Michael Greth und mir: https://youtu.be/SR6pQEXfDEk