Trin-for-trin vejledning til installation af AccessPoint i dit Microsoft 365- og Azure-miljø
Last updated: July 12, 2026 by Steve
Installationsvejledning
AccessPoint bruger en opdelt installationsmodel: en letvægts-SPFx-webdel i SharePoint, en Teams-app, der hoster den samme webdel som en personlig fane, og en Azure-backend, der kører API'en og lagrer alle data. Hver komponent lander i din egen Microsoft 365-lejer og dit eget Azure-abonnement — intet hostes af udgiveren, og ingen kundedata forlader dit miljø.
Oversigt
| Komponent | Hentes fra | Lander i |
|---|---|---|
SPFx-webdel (accesspoint.sppkg) |
Microsoft AppSource eller direkte upload til dit appkatalog | Din SharePoint Online-lejer |
Teams-app (accesspoint-teams.zip) |
Microsoft AppSource eller upload til Teams Admin Center | Dit Teams-appkatalog |
| Azure-backend (App Service, SQL, Blob Storage, Application Insights) | Ét-klik Bicep/ARM-skabelon fra Azure Portal (anbefalet) eller scriptet Bicep + PowerShell | Dit Azure-abonnement |
Til suveræne/offentlige skyer, versionsfastlåsning eller scriptede installationer publiceres alle artefakter også på https://get.realizer.io/public/accesspoint/latest/.
Installationsrækkefølgen er vigtig. Installér SharePoint-løsningen, før nogen bruger åbner Teams-personalfanen. Teams-appen indlæser SPFx-webdelen fra SharePoint via en iframe — uden den ser brugerne en SharePoint 404 inde i Teams.
Forudsætninger
- Et aktivt AccessPoint-abonnement og en licens-API-nøgle (hent AccessPoint)
- Et Azure-abonnement med Contributor-rettigheder (eller højere) på den ønskede ressourcegruppe
- Et SharePoint App Catalog oprettet i din lejer samt SharePoint Administrator-rettigheder
- Global Administrator eller Application Administrator i Entra ID til Graph-tilladelsesbevillinger og admin consent
- Teams Administrator (eller Global Admin) til at publicere Teams-appen
- Til scriptede eller manuelle installationer: Azure CLI (logget ind med
az loginsom bruger, ikke som en service principal) og PnP.PowerShell-modulet
Der findes ingen afhængighed af et Microsoft 365-licensniveau, Power Platform eller Dataverse — enhver bruger med adgang til SharePoint eller Teams kan bruge AccessPoint.
Trin 1: Installer Azure-ressourcer
Dette trin klargør backend: en Linux App Service (API'en), Azure SQL Database, Blob Storage og Application Insights med Log Analytics. Ressourcerne navngives {type}-accesspoint-{tenantName} (for eksempel app-accesspoint-contoso) og er hærdet som standard (TLS 1.3, Entra-only SQL-godkendelse, FTPS og basic auth deaktiveret).
Mulighed A: Azure Portal (anbefalet). Installer AccessPoint Bicep/ARM-skabelonen med ét klik fra Azure Portal (knappen Deploy to Azure). Installationsformularen indsamler dit abonnement og din ressourcegruppe, lejernavn (f.eks. contoso fra contoso.sharepoint.com), licens-API-nøgle, App Service SKU (B1 til evaluering, S1 til standardproduktion, P1v3 som standard), en valgfri alarm-e-mail og en Grant Graph Permissions-indstilling (aktiveret som standard; kræver Application Administrator). API-pakken installeres automatisk i App Service — efter installationen er der ingen runtime-afhængighed af eksterne tjenester.

Mulighed B: Bicep + PowerShell. Til brugerdefinerede pipelines eller streng ændringskontrol kan du køre installationsscriptet mod den publicerede ARM-skabelon:
Invoke-WebRequest -Uri "https://get.realizer.io/public/accesspoint/latest/Deploy-AccessPoint.ps1" -OutFile "Deploy-AccessPoint.ps1"
# End-to-end: infrastructure, configuration, and both apps
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-TemplateUri "https://get.realizer.io/public/accesspoint/latest/main.json" `
-DeploySharePointApp -DeployTeamsApp
Scriptet kører op til syv trin — infrastruktur, SQL Entra-only-godkendelse, Graph-tilladelsesbevillinger, en stop/start-cyklus på App Service, SharePoint storage entity (API-URL), godkendelser af SPFx API-tilladelser og valgfrie appinstallationer. Hvert trin kan springes over individuelt (-SkipInfrastructure, -SkipGraphPermissions, -SkipSharePoint). Fastlås en version med -ArtifactBaseUrl "https://get.realizer.io/public/accesspoint/1.0.0" for reproducerbare, integritetsverificerede installationer (scriptet kontrollerer den publicerede SHA-256 og afbryder ved uoverensstemmelse).
Sådan kører du selv infrastrukturdelene i stedet:
$TenantName = "contoso"
$ResourceGroup = "rg-accesspoint-$TenantName"
az group create --name $ResourceGroup --location "canadacentral"
$deployment = az deployment group create `
--resource-group $ResourceGroup `
--template-uri "https://get.realizer.io/public/accesspoint/latest/main.json" `
--parameters tenantName=$TenantName appServiceSku=P1v3 `
--output json | ConvertFrom-Json
$appName = $deployment.properties.outputs.appServiceName.value
$apiUrl = $deployment.properties.outputs.appServiceUrl.value
$principalId = $deployment.properties.outputs.appServicePrincipalId.value
# Disable SQL password auth — Entra ID (managed identity) only
az sql server ad-only-auth enable --resource-group $ResourceGroup `
--server-name $deployment.properties.outputs.sqlServerName.value
Graph-tilladelsesbevillinger. App Service managed identity skal bruge fem Microsoft Graph-applikationstilladelser: Mail.Send, User.ReadBasic.All, TeamsAppInstallation.ReadForUser.All, Application.Read.All og AppCatalog.Read.All. Skabelonen bevilger dem automatisk (grantGraphPermissions=true, standardværdien), når den installerende bruger har Application Administrator eller AppRoleAssignment.ReadWrite.All. Hvis ikke, bevilg dem bagefter:
$graphSpId = az ad sp show --id "00000003-0000-0000-c000-000000000000" --query id -o tsv
$permissions = @(
@{ Name = "Mail.Send"; Id = "b633e1c5-b582-4048-a93e-9f11b44c7e96" }
@{ Name = "User.ReadBasic.All"; Id = "97235f07-e226-4f63-ace3-39588e11d3a1" }
@{ Name = "TeamsAppInstallation.ReadForUser.All"; Id = "9ce09611-f4f7-4abd-a629-a05450422a97" }
@{ Name = "Application.Read.All"; Id = "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30" }
@{ Name = "AppCatalog.Read.All"; Id = "e12dae10-5a57-4817-b79d-dfbec5348930" }
)
foreach ($perm in $permissions) {
$bodyFile = [System.IO.Path]::GetTempFileName()
@{ principalId = $principalId; resourceId = $graphSpId; appRoleId = $perm.Id } |
ConvertTo-Json | Set-Content -Path $bodyFile -Encoding utf8
az rest --method POST `
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$principalId/appRoleAssignments" `
--body "@$bodyFile" --headers "Content-Type=application/json" --output none
Remove-Item $bodyFile
}
# Full stop/start (NOT restart) clears the managed identity token cache
az webapp stop --name $appName --resource-group $ResourceGroup
Start-Sleep -Seconds 10
az webapp start --name $appName --resource-group $ResourceGroup
Verificér: gå til https://<api-url>/api/health og bekræft, at svaret er sundt.
Trin 2: Installér AccessPoint-apps
Installér SharePoint-løsningen først, derefter Teams-appen.
SharePoint-løsning. Fra AppSource-opslaget skal du klikke på Get it now og godkende den i dit SharePoint App Catalog, installeret lejerdækkende. Alternativt kan du uploade manuelt (SharePoint Admin Center > More features > Apps > Upload, marker "Make this solution available to all sites") eller lade scriptet gøre det.

Teams-app. Fra AppSource-opslaget skal du klikke på Get it now og godkende den i Teams Admin Center, eller installere begge apps via scriptet (den bruger, der er logget ind, skal have SharePoint-admin plus Teams-admin eller Global Admin):
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-SkipInfrastructure -SkipGraphPermissions `
-DeploySharePointApp -DeployTeamsApp
Brug IKKE SharePoints "Sync to Teams". Den overskriver stiltiende manifestets
webApplicationInfo.id, hvilket ødelægger Teams-aktivitetsfeeds-notifikationer. Upload Teams-appen direkte til Teams Admin Center.
Verificér: løsningen vises i App Catalog uden fejl, og AccessPoint vises som Allowed under Teams Admin Center > Manage apps.
Trin 3: Godkend API-tilladelser
SPFx-pakken anmoder om delegerede tilladelser, som en SharePoint-admin skal godkende. I SharePoint Admin Center skal du gå til Advanced > API access og godkende hver ventende AccessPoint-anmodning (access_as_user på AccessPoint-API'en plus Graph-scopes som User.Read.All, Sites.Read.All, Files.Read.All, Mail.Read).

Eller godkend via PnP PowerShell:
Connect-PnPOnline -Url "https://contoso-admin.sharepoint.com" -Interactive
$spfxPermissions = @(
@{ Resource = "ed19c96c-a7c5-4dca-8b47-0899c406329f"; Scope = "access_as_user" }
@{ Resource = "Microsoft Graph"; Scope = "User.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Sites.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Files.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Mail.Read" }
)
foreach ($perm in $spfxPermissions) {
Grant-PnPTenantServicePrincipalPermission -Scope $perm.Scope -Resource $perm.Resource
}
Til sidst giver en Global Administrator admin consent til udgiverens multi-tenant-app ved at åbne https://login.microsoftonline.com/common/adminconsent?client_id=ed19c96c-a7c5-4dca-8b47-0899c406329f i en browser.
Verificér: siden API access viser ingen ventende AccessPoint-anmodninger.
Trin 4: Brug AccessPoint i SharePoint eller Teams
SharePoint: rediger eller opret en side, klik på +, søg efter AccessPoint, tilføj webdelen, og publicér.
Teams: brugerne finder AccessPoint under Apps > Built for your org (søgeindeksering kan tage fra 15 minutter til flere timer efter den første installation). Du kan eventuelt fastgøre den for alle via Teams Admin Center > App setup policies ved at tilføje AccessPoint til Installed apps og Pinned apps.
Trin 5: Konfigurer API-URL'en
Åbn webdelen, og gå til Settings > Setup. Indtast API-URL (App Service-URL'en fra Trin 1, f.eks. https://app-accesspoint-contoso.azurewebsites.net) og Client ID for API'ens Entra ID-appregistrering, og klik derefter på Save. Panelet validerer HTTPS og GUID-formatet, før der gemmes.

Installationsscriptet angiver den underliggende SharePoint storage entity for dig. Sådan angiver du den manuelt:
Connect-PnPOnline -Url "https://contoso.sharepoint.com" -Interactive
$appCatalogUrl = Get-PnPTenantAppCatalogUrl
Connect-PnPOnline -Url $appCatalogUrl -Interactive # storage entities live on the App Catalog site
Set-PnPStorageEntity -Key "AccessPoint_ApiUrl" -Value $apiUrl -Description "AccessPoint API base URL"
Get-PnPStorageEntity -Key "AccessPoint_ApiUrl" # verify
Verificér: genindlæs webdelen — dashboardet indlæses i stedet for opsætningsprompten.
Trin 6: Importér en konfigurationspakke
Gå til Settings > Configuration Packs, vælg pakken for din jurisdiktion (Canada ATIA, US FOIA, EU GDPR med flere), og klik på Import. Pakken opretter anmodningstyper, forlængelsesårsager, valgfelter, notifikationsskabeloner og oversættelser. Gennemgå og tilpas de importerede elementer bagefter.
Trin 7: Tildel brugerroller
Den første bruger, der åbner AccessPoint, får automatisk tildelt rollerne Administrator og SAO. Gå til Settings > Manage Users, klik på Add User, søg i din mappe, og tildel roller: mindst én Administrator og én SAO plus rollerne Custodian, Contributor, Reviewer og Reader efter behov.
AccessPoint er nu klar til brug.
Multi-tenant-installation
Brug dette mønster, når Azure-backenden ligger i en anden Entra ID-lejer end din Microsoft 365-lejer — et shared services-team, der betjener flere forretningsenheder, en MSP, der hoster for kunder, eller opdelte Azure/M365-lejere af governance-hensyn. En enkelt installation kan betjene flere M365-lejere: API'en isolerer data ud fra lejer-ID'et i hver brugers token med lejerafgrænsede databaseforespørgselsfiltre og lejerpræfiksede blob-stier. Hver M365-lejer har stadig brug for sin egen licens, sin egen SPFx-installation og godkendelser af API-tilladelser samt sine egne Graph-legitimationsoplysninger og sin egen notifikationspostkasse.
Graph-appregistrering. En managed identity fungerer kun i sin hjemlejer, så opret en single-tenant-appregistrering i M365-lejeren (f.eks. AccessPoint Graph Connector), bevilg den de samme fem Graph-applikationstilladelser, der er anført i Trin 1, med admin consent, og opret derefter en client secret, og forbind den til App Service via Key Vault:
# In the M365 tenant: create the client secret
$secret = az ad app credential reset --id $appId --display-name "AccessPoint" --years 2 --query password -o tsv
# In the Azure subscription: store the secret and reference it from the App Service
az keyvault secret set --vault-name $vaultName --name "GraphClientSecret" --value $secret
az webapp config appsettings set --resource-group $ResourceGroup --name $appName --settings `
"Graph__TenantId=$m365TenantId" `
"Graph__ClientId=$appId" `
"Graph__ClientSecret=@Microsoft.KeyVault(SecretUri=https://$vaultName.vault.azure.net/secrets/GraphClientSecret)"
az webapp restart --resource-group $ResourceGroup --name $appName
Gem aldrig hemmeligheden direkte i App Service-indstillingerne; App Service managed identity skal have rollen Key Vault Secrets User på vaulten. Når alle tre Graph__*-indstillinger er til stede, bruger API'en appregistreringen; når de mangler, falder den tilbage til managed identity ved installationer i samme lejer.
Delt postkasse og application access policy. Opret en ulicenseret delt postkasse i M365-lejeren til e-mailnotifikationer, og afgræns Mail.Send, så appen kun kan sende fra denne ene postkasse:
Connect-ExchangeOnline -Organization "contoso.onmicrosoft.com"
New-Mailbox -Name "AccessPoint Notifications" -Alias "accesspoint-noreply" -Shared
New-DistributionGroup -Name "AccessPoint Mail Senders" -Type Security -ManagedBy "admin@contoso.com"
Add-DistributionGroupMember -Identity "AccessPoint Mail Senders" -Member "accesspoint-noreply@contoso.com"
New-ApplicationAccessPolicy -AppId $appId -PolicyScopeGroupId "AccessPoint Mail Senders" `
-AccessRight RestrictAccess -Description "AccessPoint may send only from the shared mailbox"
# Verify (propagation can take up to 30 minutes)
Test-ApplicationAccessPolicy -AppId $appId -Identity "accesspoint-noreply@contoso.com" # expect: Granted
Test-ApplicationAccessPolicy -AppId $appId -Identity "someother@contoso.com" # expect: Denied
Hver M365-lejer gentager derefter Trin 2–5 (apps, godkendelser, API-URL — den samme API-URL betjener alle lejere). Teams-aktivitetsfeeds-notifikationer kræver desuden admin consent til Realizer enterprise-applikationen og Teams-appen installeret for brugerne; se Indledende opsætning for detaljer.
Tilbagerulning og drift
Standard Azure-mekanismer dækker tilbagerulning: geninstaller en tidligere API-pakke fra App Service-Deployment Center-historikken, gendan Azure SQL med punkt-i-tid-gendannelse (op til 35 dage), og genupload en tidligere versioneret .sppkg til App Catalog. Import af konfigurationspakker er additiv og tilbageføres via databasegendannelse. For den fulde operationelle runbook — detaljerede tilbagerulningsprocedurer, overvågning og vedligeholdelsesopgaver — kontakt vores supportteam.