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.

image

Anschließend öffnen Sie die Option “Server Certificates”.

image

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.

image

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.

  1. $publicCertPath = „C:\cert\MyApp.cer“
  2. $issuerId = „d3b60cc5-fbc8-48a2-80e2-c040fa788d02“
  3. $spurl =„https://sharepoint.hansevis13a.dev.hansevision.de“
  4. $spweb = Get-SPWeb $spurl
  5. $realm = Get-SPAuthenticationRealm -ServiceContext $spweb.Site
  6. $certificate = Get-PfxCertificate $publicCertPath
  7. $fullIssuerIdentifier = $issuerId + ‚@‘ + $realm
  8. 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.

  1. $serviceConfig = Get-SPSecurityTokenServiceConfig  
  2. $serviceConfig.AllowOAuthOverHttp = $true 
  3. $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

image

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.

image

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:

  1. Vorbereitung und Bereitstellung einer Provider Hosted App
  2. Provider Hosted Apps und ASP.Net MVC
  3. Bereitstellung und Entwicklung der Applikation auf einem IIS
  4. SharePoint Hosted Apps – Zugriff auf das HostWeb
  5. SharePoint Hosted Apps – AppContext bei CSOM und REST
  6. SharePoint Hosted Apps – Entwicklung mit CSOM und REST

 

Quellen: http://msdn.microsoft.com/en-us/library/office/apps/fp179901

3 Comments

  1. Pingback: Blogserie: Apps in SharePoint 2013 – Teil 1: Vorbereitung und Bereitstellung einer Provider Hosted App - SharePoint Blogs in German - Bamboo Nation

  2. avatar

    Joachim Bleichert

    Antworten

    zu dem von Ihnen behandelten Thema der Sharepoint Apps habe ich eine Frage. Es soll ein Programm zur Angebotserstellung entstehen. Die Programmlogik wird mit VB.net geschrieben, es wird auf eine Oracle-Datenbank zugegriffen, das Programm generiert und speichert verschiedene MS-Office-(im Wesentlichen Word)-Dateien. Mein Problem: für die Bedienung werden diverse Eingabeformulare benötigt: Vom Logindialog gelangt man in ein Hauptformular mit Treeview, von dem aus man in ca. 10 bis 15 verschiedene Detailformulare verzweigt. Die Detailformulare öffnen sich jeweils modal, d.h. es ist also immer nur ein Formular z.Zt. bearbeitbar. Lässt sich eine solche Applikation überhaupt sinnvoll mit Sharepoint Apps oder Web Parts erstellen (Im Augenblick habe ich gewisse Zweifel) oder sollte man eine ganz andere Vorgehensweise wählen?

    • avatar

      Steffen Schindler

      Antworten

      Hallo Herr Bleichert,

      das ist ein Thema dass mich auch anfangs irritiert hat.
      Ich verstehe das Ganze so. Man kann Line of Business-Applikation nun in den SharePoint integrieren und vom SharePoint aus aufrufbar machen. Das wollen viele Kunden denn dadurch haben sie einen zentralen Zugriffspunkt auf alle Anwendungen.
      Zusätzlicher Vorteil ist, dass sich der Nutzer nun nicht mehr neu anmelden muss sondern automatisch mit seinem SharePoint / AD-Account angemeldet wird.

      Nun kennt man das Einbinden von externen Anwendungen bisher nur als WebPart. Mit dem App-Model von 2013 können Sie eine App erstellen, die dann auf eine eigene Seite verweist in der die App läuft (also die bisherige ASP.Net-Anwendung). Zusätzlich können Sie diese mit SharePointinhalten anreichern. Am einfachsten wäre hier der Zurück-Knopf in den SharePoint.

      Zurück zu Ihrem Fall. Der einfachste und erste Anwendungsfall für Ihre Anwendung wäre den Login durch einen autmatischen Login zu ersetzen. Der zweite Anwendungsfall könnte sein, in die Anwendung das ChromeControl (siehe Teil2 der Blogserie) in Ihre Anwendung zu integrieren um dem Benutzer zu suggerieren „Du bist noch im SharePoint“.

      Bei den nächsten Anwendungsfälle kommt es ganz auf Ihre Anwendung an. Macht es Sinn Daten aus SharePoint in Ihrer Anwendung anzuzeigen (z.B. Dokumente die im SharePoint abglegt sind aber relevant für eine bestimmte Maske sind).

      Ich hoffe ich konnte Ihnen etwas weiterhelfen.

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.