Trin-for-trin vejledning til installation af AccessPoint i dit Microsoft 365- og Azure-miljø

Last updated: August 09, 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 (hent AccessPoint) — API'en aktiverer selv sin licens automatisk via sin Entra-identitet, så der ikke er brug for en licensnøgle, medmindre Realizer Support udleverer en til din lejer
  • 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 login som 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, Microsoft Defender for SQL aktiveret som standard). SQL-serveren oprettes Entra-first: den installerende bruger bliver den indledende Entra-administrator, og der findes aldrig en SQL-legitimation — der er intet at rotere eller deaktivere.

Ugentlige e-mails om "Vulnerability Assessment scan completed" med fejlende kontroller, men intet i portalen? Forventet ved en frisk installation, ikke en sårbarhed. Microsoft Defender for SQL kører den klassiske (storage-baserede) Vulnerability Assessment, men Azure-portalens Defender-blad viser nu som standard den nyere express configuration-visning, så e-mailens "View results"-link kan lande på en visning uden nogen scanninger. De fejlende kontroller er baseline-kontroller, som fejler, indtil den aktuelle tilstand er godkendt som baseline — skabelonen forudgodkender den deterministiske VA2065-kontrol (firewallregler), men en lav-alvorlig, lejerspecifik brugersporingskontrol på applikationsdatabasen kan ikke forudgodkendes. Løs det én gang: åbn SQL-serveren (ikke databasen) → Microsoft Defender for Cloud → Vulnerability assessment → åbn den fejlende kontrol → Approve as baselineScan igen; efterfølgende ugentlige e-mails rapporterer, at alle kontroller består.

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) og en obligatorisk Deployment type uden standardværdi: vælg New installation til en førstegangsinstallation, eller Upgrade existing installation, når du geninstallerer oven på en kørende AccessPoint — opgraderingstilstanden bevarer operatørtilføjede applikationsindstillinger og lader databaseadgangen være urørt. Vælg eventuelt en App Service SKU (B1 til evaluering, S1 til standardproduktion, P1v3 som standard), en alarm-e-mail og de valgfrie AI-funktioner nedenfor. Lad licens-API-nøglen stå tom — AccessPoint aktiverer selv sin licens automatisk via appens Entra-identitet; indtast kun en værdi, hvis Realizer Support udleverer en til din lejer. API-pakken installeres automatisk i App Service — efter installationen er der ingen runtime-afhængighed af eksterne tjenester.

Finish Setup (Graph-tilladelser). Skabelonen selv bevilger aldrig Graph-tilladelser. Åbn efter installationen linket finishSetupUrl fra installationens Outputs, og log ind som Global Administrator — udgiverens Finish Setup-side bevilger alle de Graph-tilladelser, managed identity har brug for, i én idempotent omgang. Genbesøg det samme link efter en opgradering for at få de nyligt introducerede tilladelser med. Udfør derefter en fuld Stop/Start-cyklus på App Service (ikke Restart), så tilladelserne træder i kraft.

Installation af AccessPoint Bicep/ARM-skabelon i Azure Portal

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 registrerer selv installationstypen (ny installation kontra opgradering) og kører op til syv trin — infrastruktur, SQL Entra-only-godkendelse (et sikkerhedsnet: nuværende skabeloner opretter serveren Entra-first), Graph-tilladelsesbevillinger (den scriptede pendant til Finish Setup-siden), en stop/start-cyklus på App Service, den valgfrie 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/2.0.67" 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

# Backstop only: current templates create the SQL server Entra-first, so
# Entra-only auth is already in force and no SQL credential ever exists
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 disse Microsoft Graph-applikationstilladelser: Mail.Send, User.ReadBasic.All, TeamsAppInstallation.ReadForUser.All, Application.Read.All, AppCatalog.Read.All og (bevilget som standard, kan fravælges) AiEnterpriseInteraction.Read.All til Copilot-registrering. Den nemmeste vej er Finish Setup-siden — installationens finishSetupUrl-output — som bevilger dem alle i én idempotent omgang ved hjælp af en Global Administrators delegerede login. Sådan bevilger du dem i stedet via CLI:

$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" }
    # Copilot capture (tenant-wide) — granted by default; remove this line to opt out:
    @{ Name = "AiEnterpriseInteraction.Read.All";     Id = "839c90ab-5771-41ee-aef8-a562e8487c1e" }
)

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.

Valgfrie AI-funktioner

Skabelonen eksponerer fire valgfrie funktioner, hvoraf ingen er nødvendig for at køre AccessPoint. AI Assist, AI Search og Document Intelligence er slået fra, medmindre du aktiverer dem på installationstidspunktet; Copilot-registreringstilladelsen bevilges som standard, men kan fravælges (formularen Deploy to Azure, -p name=valueaz deployment eller de Deploy-AccessPoint.ps1-switches, der er nævnt nedenfor, styrer alle fire). Alle AI-ressourcer installeres i dit eget Azure-abonnement med udelukkende managed identity-godkendelse — ingen kundedata forlader din lejer, og Microsoft træner ikke modeller på dem.

  • Udrul AI Assist (Azure OpenAI) — tilføjer en Azure OpenAI-ressource til dit abonnement med managed identity-godkendelse (ingen API-nøgler). Faktureringen er forbrugsbaseret, så en inaktiv lejer betaler ca. $0, og en travl afdeling bruger typisk encifrede dollarbeløb om måneden. At udrulle den aktiverer AI Assist-funktionerne, som hver især kan slås til og fra individuelt under Settings > Features. Hvert AI-output er et forslag eller et redigerbart udkast — en person beslutter altid.
  • Udrul AI Search (deployAiSearch=true) — tilføjer Azure AI Search, så søgefeltet i Dokumenter matcher ord inde i dokumenter (ekstraheret PDF-tekst) ud over navne, typer og tags; når AI Assist også er udrullet, understøtter det semantisk søgning. Nye dokumenter indekseres automatisk, og en Administrator-gennemgang (Settings > Setup > Document content search) indekserer eventuelle, der er ældre end den.
  • Udrul Document Intelligence (deployDocumentIntelligence=true) — tilføjer Azure AI Document Intelligence til OCR: scannede dokumenter, der kun består af billeder, får læst deres tekst, så de indgår i indholdssøgning, dubletgenkendelse, AI-resuméer og overstregningsforslag som ethvert andet dokument. Faktureringen er pr. side (ca. 1,50 USD pr. 1.000 sider). Uden den matcher scannede dokumenter stadig på navn, type og tags.
  • Copilot-registreringstilladelse (AiEnterpriseInteraction.Read.All) — denne tenant-dækkende Graph-tilladelse bevilges som standard, så depotforvaltere kan registrere Copilot-interaktionshistorik via Documents > Add from Microsoft 365 fra starten. Den findes kun som applikationstilladelse (Microsoft Graph tilbyder ingen delegeret variant), men AccessPoint læser kun Copilot-historikken for den bruger, der er logget ind. Lejere, der følger princippet om færrest mulige rettigheder, kan fravælge den med Deploy-AccessPoint.ps1 -DisableCopilotCapture (eller grantCopilotCapturePermission=false på ARM/Bicep-skabelonen) og kan til enhver tid tilbagekalde app-rollen i Entra ID; de fem standard-Graph-tilladelser ovenfor påvirkes ikke.

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.

AccessPoint-løsningen i SharePoint App Catalog

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 samt Graph-scopes til personvælgerne og Tilføj-fra-Microsoft-365-registreringskilderne — User.Read.All, Sites.Read.All, Files.Read.All, Mail.Read og Mail.Read.Shared (egne og delte/modtagelsespostkasser), Calendars.Read og Calendars.Read.Shared, Chat.Read, ChannelMessage.Read.All, Team.ReadBasic.All, Channel.ReadBasic.All (Teams-chats og -kanaler) samt Notes.Read og Notes.Read.All (OneNote). .Shared-scopene udvider aldrig adgangen af sig selv — Graph håndhæver stadig hver brugers eksisterende Exchange-postkasserettigheder.

Godkendelse af AccessPoint API-tilladelsesanmodninger

Den ventende anmodning er valgt, med Godkend og Afvis tilgængelige

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" }
    @{ Resource = "Microsoft Graph"; Scope = "Mail.Read.Shared" }
    @{ Resource = "Microsoft Graph"; Scope = "Calendars.Read" }
    @{ Resource = "Microsoft Graph"; Scope = "Calendars.Read.Shared" }
    @{ Resource = "Microsoft Graph"; Scope = "Chat.Read" }
    @{ Resource = "Microsoft Graph"; Scope = "ChannelMessage.Read.All" }
    @{ Resource = "Microsoft Graph"; Scope = "Team.ReadBasic.All" }
    @{ Resource = "Microsoft Graph"; Scope = "Channel.ReadBasic.All" }
    @{ Resource = "Microsoft Graph"; Scope = "Notes.Read" }
    @{ Resource = "Microsoft Graph"; Scope = "Notes.Read.All" }
)
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: Konfiguration af API-URL (normalt automatisk)

Webdelen finder API-URL'en automatisk. AccessPoint-API'en registrerer selv sin adresse hos Realizer-platformen, når den validerer sin licens — inden for få minutter efter, at App Service er startet — og webdelen henter den derfra. I de fleste installationer er der intet at gøre her.

Verificér: genindlæs webdelen — dashboardet indlæses i stedet for opsætningsprompten. Hvis API'en netop er blevet installeret, finder webdelen den ved næste sideindlæsning efter den første vellykkede licensvalidering.

Manuel angivelse af API-URL (valgfrit)

Dette er kun nødvendigt for at tilsidesætte den automatiske søgning — for eksempel for at fastlåse webdelen til et brugerdefineret domæne.

Mulighed A — Setup-panelet. Åbn webdelen, gå til Settings > Setup, indtast API-URL (App Service-URL'en fra Trin 1, f.eks. https://app-accesspoint-contoso.azurewebsites.net), og klik på Save. Panelet validerer HTTPS, før der gemmes, og en manuelt angivet URL har forrang frem for automatisk søgning.

Konfiguration af API-URL i Setup-panelet

Mulighed B — storage entity (PowerShell). Fastlås URL'en i en AccessPoint_ApiUrl storage entity, som har forrang frem for den automatiske søgning. Siden januar 2026 blokerer SharePoint skrivninger til property-bag på no-script-appkataloget (message center MC1186368), så en SharePoint-administrator skal tillade dem én gang, lejerdækkende, før storage entity kan skrives:

# One-time (SharePoint admin): allow property-bag updates on no-script sites
Set-SPOTenant -AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled $true

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

Trin 6: Importér en jurisdiktionspakke

Gå til Settings > Jurisdiction 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 rollen Administrator — den eneste indbyggede rolle, som altid opløses til alle tilladelser. Enhver anden rolle er lejerdefineret: import af en jurisdiktionspakke tilsår færdige roller (såsom Request Coordinator, den de facto adgangs- og privatlivsansvarlige rolle), og du kan omdøbe eller omforme dem under Settings > Roles & Permissions. Gå til Settings > Manage Users, klik på Add User, søg i din mappe, og tildel mindst én Administrator og én koordinator; adgang som Custodian, Contributor, Reviewer og Reader følger automatisk af det arbejde, du tildeler folk.

AccessPoint er nu klar til brug.

Opdatering af AccessPoint

AccessPoint fortæller dig, når en nyere version er tilgængelig — der er intet at abonnere på eller polle manuelt:

  • Under rutinemæssig licensvalidering rapporterer Realizer Platform den senest udgivne AccessPoint-version (den version, der senest er forfremmet til kundens udgivelseskanal). Ingen brugs- eller sagsdata indgår i dette tjek.
  • Når den udgivne version er nyere end den, din API kører, ser administratorer meddelelsen Opdatering tilgængelig på dashboardet og i Opsætning, med den aktuelle og den seneste versions numre.
  • Når du er ajour (eller kører en pre-release-build, der er nyere end den udgivne version), viser Opsætning "Din AccessPoint-API er ajour."

Sådan anvender du en opdatering:

  1. I Settings > Setup skal du klikke på Deploy update to Azure. Dette åbner Azure-portalen med den seneste ARM-skabelon — den samme skabelon, der bruges til den indledende installation.
  2. Vælg installationstypen Upgrade existing installation. Dette bevarer operatørtilføjede applikationsindstillinger og lader databaseadgangen være urørt; databaseskemaet opgraderes automatisk ved API-opstart (DacPac-migrering).
  3. Opdater SPFx-pakken: upload den seneste accesspoint.sppkg til dit App Catalog (Trin 2 ovenfor). Opdater Teams-app-pakken i Teams Admin Center, hvis en ny accesspoint-teams.zip er udgivet.
  4. Genbesøg Finish Setup-siden efter opgraderingen — den bevilger idempotent eventuelle Graph-tilladelser, der er introduceret siden din oprindelige installation.

Eksempeldata til evalueringslejere. Til demo- og evalueringsmiljøer kan en separat AccessPoint DevTools-webdel (accesspoint-devtools.sppkg) nulstille en lejer og indsætte jurisdiktionspassende eksempeldata — testbrugere, anmodninger, tildelinger og genererede dokumenter — med et Rebuild demo-klik. Den genbruger hovedappens API-forbindelse og erklærer sine egne API-tilladelser (godkendes én gang under SharePoint Admin > Advanced > API access). Ikke til produktion: de destruktive nulstillingsendepunkter aktiveres kun, når App Service-indstillingen DevTools:Enabled=true er sat — udrul kun pakken til udviklings-/demolejere.

Teams-notifikationers datasikkerhed (valgfri)

Alle anmodningsregistreringer, rekvirent-PII, dokumenter og revisionshistorik lever udelukkende i din egen lejer. Notifikationer respekterer det samme. AccessPoint leverer hver notifikation på op til tre kanaler, og to af dem forlader aldrig din lejer: den indbyggede feed (leveret fra din egen API) og e-mail/Outlook (sendt fra din egen delte postkasse via Mail.Send). Teams-aktivitetsfeedet er den eneste kanal, der i sin standardtilstand POST'er en lille payload til Realizer Platform API'en — hvilket kun eksisterer, fordi Microsoft Graph kræver, at en aktivitetsnotifikation sendes af den app, der ejer Teams-manifestet. Udgiveren gemmer intet af det og logger kun modtager- + lejer-GUID'erne, og de samme notifikationer ankommer stadig via e-mail og i appen. To kontroller strammer eller fjerner selv dette:

Minimér (en til/fra-knap). Under Indstillinger > Opsætning > Teams-notifikationer skal du slå Minimér indhold i Teams-notifikationer (privatliv) til. Den videresendte payload erstatter derefter notifikationens titel-/preview-tekst og den handlende brugers navn med neutrale pladsholdere, så ingen tildelings-/opgavenavne, notifikationstekst eller personnavne forlader lejeren — kun aktivitetstypen, anmodningsnummeret og postidentifikatorerne transiterer stadig, så toasten kan dirigeres og deep-linke. Den fulde tekst vises stadig i den indbyggede feed. Ingen manifestændring krævet. (Bag kulissen: lejerindstillingen Notifications:TeamsMinimalPayload.)

Eliminér (selv-host relæet). En lejer, der ikke må sende nogen notifikationsdata til udgiveren, kan lade sin egen API kalde Graph direkte med sin managed identity, så intet når api.realizer.io:

  1. Bevilg TeamsActivity.Send (applikation) til API'ens managed identity, og giv admin consent — Graph tillader kun, at den app, der ejer Teams-manifestet, sender aktivitetsnotifikationer, så den sendende identitet skal matche manifestets webApplicationInfo.id.
  2. Peg Teams-manifestet på jeres egen app. Sæt i manifest.json webApplicationInfo.id til jeres API-appregistrerings-/managed identity-klient-id (i stedet for udgiverens app-id), og lad webApplicationInfo.resource forblive SharePoint-sitets domæne. Upload den redigerede zip direkte i Teams Admin Center — brug ikke SharePoints "Sync to Teams" (den omskriver webApplicationInfo).
  3. Skift API'en til Direct relay — tilføj App Service-indstillingen Notifications__TeamsRelayMode=Direct (standard/uangivet = Publisher), og genstart. API'en kalder nu selv sendActivityNotification; udgiverens enterprise-app-bevilling er ikke længere nødvendig til notifikationer.
  4. Genvalidér — send en testnotifikation (bekræft, at den deep-linker), og bekræft, at Teams-personfanen stadig logger ind, da I har ændret webApplicationInfo.id.

Direct relay holder 100 % af notifikationsindholdet i lejeren, men indebærer, at I skal vedligeholde et tilpasset Teams-manifest og give fornyet samtykke, når app-id'et ændres. De fleste lejere, der kun har brug for at undertrykke fritekst og personnavne, bør i stedet bruge Minimér-knappen — ingen manifestændring, og notifikationen deep-linker stadig.

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 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 jurisdiktionspakker er additiv og tilbageføres via databasegendannelse. For den fulde operationelle runbook — detaljerede tilbagerulningsprocedurer, overvågning og vedligeholdelsesopgaver — kontakt vores supportteam.