Przygotowanie środowiska developerskiego pod tworzenie aplikacji w modelu ProviderHosted App pod SharePoint 2013 lub 2016 nie jest tak proste i oczywiste jak by mogło się wydawać.
Poniżej postaram się przedstawić najprostszy sposób, który w żadnym wypadku nie może być użyty na środowisku produkcyjnym ze względu na obniżenie poziomu bezpieczeństwa.
Instrukcja jest przygotowana na podstawie środowiska (ale na innych konfiguracjach różnice są tylko kosmetyczne):
Windows Server 2012 R2
SQL Server 2012 R2
SharePoint 2013
Visual Studio 2017
Wszystkie powyższe zaktualizowane do najnowszych wersji. Komponenty zainstalowane metodą „next, next , next” bez żadnej dodatkowej konfiguracji.
Krok 1 – Certyfikat
Tworzymy certyfikat na potrzeby powiązania aplikacji z witryną SharePoint w trybie Hight Trust.
1. Otwieramy IIS manager
2. Zaznaczamy główny węzeł serwera
3. Otwieramy Server Certificates
Klikamy Create Self-Signed Certificate…
Wpisujemy nazwę certyfikatu np. „HighTrust”
Certificate store zostawiamy na „Personal”
Na liście zobaczymy nasz nowo dodany certyfikat.
Eksport do CER i PFX
Z listy certyfikatów w IIS otwieramy nasz certyfikat dwuklikiem.
Z zakładki Details wybieramy Copy to File…
Przechodzimy przez wizard exportu zostawiając wszystkie wartości domyślne, jako ścieżkę zapisu wybieramy np. folder C:\HighTrust\
Następnie podobną procedurę wykonujemy w celu uzyskania pliku PFX
Tym razem zaznaczamy Yes, export the private key
Na ekranie Export File Format zostawiamy wartości domyślne.
W Security zaznaczamy Password i wprowadzamy hasło które później użyjemy w web.config
Krok 2 – Witryna
Tworzymy kolekcję witryn opartą o szablon „Developer Site”
lub uruchamiamy feature SideLoading dla już istniejącej kolekcji witryn.
Enable-SPFeature e374875e-06b6-11e0-b0fa-57f5dfd72085 –url http://srv.dev.local/sites/iscg
Krok 3 – Usługi
Dostosowujemy zmienne i uruchamiamy poniższy skrypt w celu:
- ustawienia app domain i app prefix
- uruchomienia usług SharePoint Administration i SharePoint Timer Service
- uruchomienia App Management Service Application i Subscription Settings Service Application
- zdefiniowania App Site Subscription Name
- utworzenia i skonfigurrowania nowego Trusted Security Token Issuer w trybie TrustBroker
- „rozluznienia” zabiezpieczeń OAuth do obsługi bez SSL
add-pssnapin microsoft.sharepoint.powershell $TargetSiteUrl = "http://srv.dev.local/" #adres witryny z włączonym SideLoading $CertPath = "C:\HighTrust\HighTrust.cer" #podaj poprawną ścieżkę do Twojego pliku CER Set-SPAppDomain "apps.local" #dostosuj tą wartość $account = Get-SPManagedAccount "dev\spfarm" #użyj swojego konta zarządzanego $issuerId = "447f40c6-99df-4d37-9739-5370102489f7" #możesz zmienić tą wartość na dowolny poprawny guid zapisany lowercase $sPAppSiteSubscriptionName = "app" #możesz zmienić tą wartość na dowolną net start SPAdminV4 net start SPTimerV4 Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"} | Start-SPServiceInstance Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"} $appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account $appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolSubSvc –Name SettingsServiceApp –DatabaseName SettingsServiceDB $proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc $appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServiceDB $proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc Set-SPAppSiteSubscriptionName -Name $sPAppSiteSubscriptionName -Confirm:$false $spweb = Get-SPWeb $TargetSiteUrl $realm = Get-SPAuthenticationRealm -ServiceContext $spweb.Site $fullAppIdentifier = $issuerId + '@' + $realm $certificate = Get-PfxCertificate $CertPath New-SPTrustedSecurityTokenIssuer -Name $issuerId -Certificate $certificate -RegisteredIssuerName $fullAppIdentifier –IsTrustBroker $serviceConfig = Get-SPSecurityTokenServiceConfig $serviceConfig.AllowOAuthOverHttp = $true $serviceConfig.Update()
Krok 4 – Visual Studio
Tworzymy nowy projekt z szablonu SharePoint Add-in
Wpisujemy adres naszej witryny i wybieramy Provider-hosted
Wizard automatyczni powinien rozpoznać wersję SharePoint
Wybieramy nasza ulubiona technologie
Wybieramy Use a certificate
Uzupełniamy ścieżkę do pliku PFX, wpisujemy hasło do pliku PFX oraz podajemy Issuer ID użyty w skrypcie z poprzedniego kroku.
Śmiało wciskamy F5 i cieszymy się działającą aplikacją w modelu ProviderHosted.