Blogserie: Apps in SharePoint 2013 – Teil 1: Vorbereitung und Bereitstellung einer Provider Hosted App
Mit diesem Blogserie möchte ich eine Einführung in die App-Entwicklung in SharePoint 2013 geben. Zunächst möchte ich über Provider Hosted Apps sprechen, da diese für Businessanwendung aus meiner Sicht öfter genutzt werden als Auto Hosted- oder SharePoint Hosted Apps. Falls Sie noch nicht den Unterschied zwischen den Hostingoptionen kennen, möchte ich Ihnen folgenden Artikel ans Herz legen: http://msdn.microsoft.com/en-us/library/fp179887.aspx
Um eine Provider Hosted App bereitzustellen muss man sein System dafür vorbereiten. Dies wollen wir im ersten Schritt machen um anschließend die obligatorische “Hello World”-App zu entwickeln.
Zertifikat
Zunächst muss dafür ein privates und öffentliches Zertifikat erstellen. Hierfür öffnen sie den IIS-Manager und klicken auf den Servernamen.
Anschließend öffnen Sie die Option “Server Certificates”.
Mit “Create Self-Signed Certificate” kann ein eigenes Zertifikat erstellt werden. Geben Sie noch einen Name für das Zertifikat an und klicken Sie Ok. Im Kontextmenü finden Sie die Option “Export”. Hiermit wird das Zertifikat mit einem Passwort versehen und als pfx-Datei exportiert.
Nun müssen Sie noch eine korrespondierende cer-Datei erstellen. Hierfür Öffnen Sie das Zertifikat im Reiter Details.
Wählen Sie “Copy to File” und im Wizard die Option “No, do not export the private key”. Anschließend geben Sie noch einen Pfad an zu dem das Zertifikat exportiert werden soll.
Issuer ID
Als nächstes muss eine Issuer ID ausgestellt werden. Hierfür generieren Sie sich auf einem beliebigen Weg eine GUID. Achten Sie darauf das alle Buchstaben klein geschrieben sind. Sonst kommt es später bei der Bereitstellung zu einem Fehler. Bitte bewahren Sie diese Guid auf, da sie später noch benötigt wird.
Beispiel: d3b60cc5-fbc8-48a2-80e2-c040fa788d02
SharePoint für ein Server-to-Server-Szenario (S2S) konfigurieren
Hierfür verwenden Sie folgendes Powershellskript. Es erstellt einen SPTrustedSecurityTokenIssuer. Dieser dient dazu eine Trust-Verbindung zwischen einer App und einer Webapplikation herzustellen. Nur hierdurch wird es möglich, dass sich der Benutzer nicht erneut an einer Webapplikation anmelden muss.
Achten Sie darauf den Zertifikatspfad in Zeile 1 anzupassen. Die Issuer ID, die wir im Schritt zuvor generiert haben, muss in Zeile 2.
- $publicCertPath = “C:\cert\MyApp.cer”
- $issuerId = “d3b60cc5-fbc8-48a2-80e2-c040fa788d02”
- $spurl =“https://sharepoint.hansevis13a.dev.hansevision.de”
- $spweb = Get-SPWeb $spurl
- $realm = Get-SPAuthenticationRealm -ServiceContext $spweb.Site
- $certificate = Get-PfxCertificate $publicCertPath
- $fullIssuerIdentifier = $issuerId + ‘@’ + $realm
- New-SPTrustedSecurityTokenIssuer -Name “MySecurityTokenIssuer” -Certificate $certificate -RegisteredIssuerName $fullIssuerIdentifier –IsTrustBroker
HTTPS für die Entwicklung ausschalten (optional):
Wenn Sie wollen, können Sie HTTPS für die Entwicklung ausschalten. Damit können Sie Ihre externe Webanwendung auch unter Http laufen lassen.
- $serviceConfig = Get-SPSecurityTokenServiceConfig
- $serviceConfig.AllowOAuthOverHttp = $true
- $serviceConfig.Update()
Erstellen einer “Hello World”-Provider Hosted App:
Nun ist der große Moment gekommen, in dem wir unsere erste Provider Hosted App erstellen. Bitte starten Sie Visual Studio 2012 (als Administrator). Erstellen Sie ein neues Projekt vom Typ “App for SharePoint 2013″. Falls Sie bisher nicht die Office Developer Tools installiert haben, finden Sie diese hier: http://www.microsoft.com/visualstudio/deu#office-dev-tools-for-visual-studio
Im nächsten Schritt des Wizards ändern Sie den Bereitstellungstyp in Provider Hosted App. Bitte validieren Sie die Site auf der Sie die App entwickeln wollen. Diese sollte als Developer Site erstellt worden sein.
Im nächsten Schritt geben Sie den Pfad zum pfx-Zertifikat, das zugehörige Passwort und die generierte IssuerID an. Mit einem Klick auf Finish wird das Projekt erstellt.
Nach einem kurzen Druck auf F5 sollte das Projekt kompilieren und im SharePoint bereitgestellt werden. Der Benutzer muss bei der Bereitstellung der App noch einmal auf Trust klicken. Die Webapplikation wird für die Entwicklung im IIS Express gehostet.
Troubleshooting:
Falls die App nicht sofort bereitgestellt wird, gibt es mehrere Fehlerquellen, die man leider nicht anhand der Fehlermeldung unterscheiden kann. Fehlerquellen:
- Dev-Server nicht korrekt am Domain-Controller registriert
- IssuerId enthält Großbuchstaben
- Es existiert kein Userprofile im SharePoint 2013
- Die Webapplikation akzeptiert anonymen Zugriff (falls schon im IIS gehostet)
- App-Zertifikat ist nicht im Zertifikatsspeicher
- DisableLoopbackCheck nicht ausgeschaltet
Blogserie:
Dies war der erste Teil der Blogserie weitere Teile folgen:
- Vorbereitung und Bereitstellung einer Provider Hosted App
- Provider Hosted Apps und ASP.Net MVC
- Bereitstellung und Entwicklung der Applikation auf einem IIS
- SharePoint Hosted Apps – Zugriff auf das HostWeb
- SharePoint Hosted Apps – AppContext bei CSOM und REST
- SharePoint Hosted Apps – Entwicklung mit CSOM und REST
Quellen: http://msdn.microsoft.com/en-us/library/office/apps/fp179901