Steg-för-steg-guide för att driftsätta AccessPoint i din Microsoft 365- och Azure-miljö
Last updated: August 09, 2026 by Steve
Driftsättningsguide
AccessPoint använder en delad driftsättningsmodell: en lättviktig SPFx-webbdel i SharePoint, en Teams-app som är värd för samma webbdel som en personlig flik, och en Azure-backend som kör API:et och lagrar all data. Varje komponent placeras i din egen Microsoft 365-klientorganisation och Azure-prenumeration — inget hostas av utgivaren, och ingen kunddata lämnar din miljö.
Översikt
| Komponent | Hämtas från | Placeras i |
|---|---|---|
SPFx-webbdel (accesspoint.sppkg) |
Microsoft AppSource eller direkt uppladdning till din appkatalog | Din SharePoint Online-klientorganisation |
Teams-app (accesspoint-teams.zip) |
Microsoft AppSource eller uppladdning till Teams administrationscenter | Din Teams-appkatalog |
| Azure-backend (App Service, SQL, Blob Storage, Application Insights) | Bicep/ARM-mall med ett klick från Azure-portalen (rekommenderas) eller skriptad Bicep + PowerShell | Din Azure-prenumeration |
För suveräna moln/myndighetsmoln, versionslåsning eller skriptade driftsättningar publiceras alla artefakter även på https://get.realizer.io/public/accesspoint/latest/.
Installationsordningen spelar roll. Installera SharePoint-lösningen innan någon användare öppnar den personliga fliken i Teams. Teams-appen läser in SPFx-webbdelen från SharePoint i en iframe — utan den ser användarna en SharePoint 404-sida inuti Teams.
Förutsättningar
- En aktiv AccessPoint-prenumeration (skaffa AccessPoint) — API:et aktiverar sin licens automatiskt med hjälp av sin Entra-identitet, så ingen licensnyckel behövs om inte Realizer Support tillhandahåller en för din klientorganisation
- En Azure-prenumeration med rollen Deltagare (eller högre) på målresursgruppen
- En SharePoint-appkatalog etablerad i din klientorganisation, samt rollen SharePoint-administratör
- Global administratör eller programadministratör i Entra ID för beviljande av Graph-behörigheter och administratörsgodkännande
- Teams-administratör (eller global administratör) för att publicera Teams-appen
- För skriptade eller manuella driftsättningar: Azure CLI (inloggad med
az loginsom användare, inte som tjänsteprincipal) och modulen PnP.PowerShell
Det finns inget beroende av Microsoft 365-licensnivå, Power Platform eller Dataverse — vilken användare som helst med åtkomst till SharePoint eller Teams kan använda AccessPoint.
Steg 1: Driftsätt Azure-resurser
Det här steget etablerar backend: en Linux App Service (API:et), Azure SQL Database, Blob Storage och Application Insights med Log Analytics. Resurserna namnges {typ}-accesspoint-{klientnamn} (till exempel app-accesspoint-contoso) och är hårdgjorda som standard (TLS 1.3, enbart Entra-autentisering för SQL, FTPS och grundläggande autentisering avaktiverat, Microsoft Defender for SQL påslaget som standard). SQL-servern skapas Entra-först: den driftsättande användaren blir den första Entra-administratören och det finns aldrig några SQL-autentiseringsuppgifter — det finns inget att rotera eller avaktivera.
Veckovisa e-postmeddelanden om "Vulnerability Assessment scan completed" som visar underkända kontroller, men ingenting i portalen? Förväntat vid en färsk driftsättning, inte en sårbarhet. Microsoft Defender for SQL kör den klassiska (lagringsbaserade) Vulnerability Assessment, men Azure-portalens Defender-blad använder numera som standard den nyare vyn express configuration, så länken "Visa resultat" i e-postmeddelandet kan landa på en vy utan några genomförda skanningar. De underkända kontrollerna är baslinje-kontroller, som underkänns tills det aktuella läget godkänns som baslinje — mallen förgodkänner den deterministiska kontrollen VA2065 (brandväggsregler), men en klientorganisationsspecifik kontroll med låg allvarlighetsgrad för användarspårning på applikationsdatabasen kan inte förklaras i förväg. Lös det en gång för alla: öppna SQL-servern (inte databasen) → Microsoft Defender for Cloud → Vulnerability assessment → öppna den underkända kontrollen → Godkänn som baslinje → kör Scan igen; efterföljande veckovisa e-postmeddelanden rapporterar att alla kontroller godkänns.
Alternativ A: Azure-portalen (rekommenderas). Driftsätt AccessPoints Bicep/ARM-mall med ett klick från Azure-portalen (knappen Deploy to Azure). Driftsättningsformuläret samlar in din prenumeration och resursgrupp, klientnamn (t.ex. contoso från contoso.sharepoint.com) samt en obligatorisk Driftsättningstyp utan standardvärde: välj Ny installation för en förstagångsdriftsättning, eller Uppgradera befintlig installation vid omdriftsättning över en körande AccessPoint-installation — uppgraderingsläget bevarar operatörstillagda programinställningar och lämnar databasåtkomsten orörd. Välj eventuellt en App Service-SKU (B1 för utvärdering, S1 för standardproduktion, P1v3 som standard), en e-postadress för aviseringar samt de valfria AI-kapabiliteterna nedan. Lämna API-nyckeln för licensen tom — AccessPoint aktiverar sin licens automatiskt med hjälp av appens Entra-identitet; ange bara ett värde om Realizer Support tillhandahåller ett för din klientorganisation. API-paketet driftsätts automatiskt i App Service — efter driftsättningen finns inget körtidsberoende av externa tjänster.
Slutför konfigurationen (Graph-behörigheter). Mallen i sig beviljar aldrig Graph-behörigheter. Efter driftsättningen öppnar du länken finishSetupUrl från driftsättningens utdata och loggar in som global administratör — utgivarens sida för att slutföra konfigurationen beviljar i en enda idempotent omgång alla Graph-behörigheter som den hanterade identiteten behöver. Besök samma länk igen efter en uppgradering för att få nyligen tillkomna behörigheter. Genomför sedan en fullständig stopp/start-cykel för App Service (inte omstart) så att behörigheterna träder i kraft.

Alternativ B: Bicep + PowerShell. För anpassade pipelines eller strikt ändringskontroll, kör driftsättningsskriptet mot den publicerade ARM-mallen:
Invoke-WebRequest -Uri "https://get.realizer.io/public/accesspoint/latest/Deploy-AccessPoint.ps1" -OutFile "Deploy-AccessPoint.ps1"
# End-to-end: infrastruktur, konfiguration och båda apparna
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-TemplateUri "https://get.realizer.io/public/accesspoint/latest/main.json" `
-DeploySharePointApp -DeployTeamsApp
Skriptet identifierar automatiskt driftsättningstypen (ny installation kontra uppgradering) och kör upp till sju steg — infrastruktur, enbart Entra-autentisering för SQL (en säkerhetsspärr: aktuella mallar skapar servern Entra-först), beviljande av Graph-behörigheter (skriptmotsvarigheten till sidan för att slutföra konfigurationen), en stopp/start-cykel för App Service, den valfria SharePoint-lagringsentiteten (API-URL), godkännanden av SPFx API-behörigheter, samt valfri appinstallation. Varje steg kan hoppas över individuellt (-SkipInfrastructure, -SkipGraphPermissions, -SkipSharePoint). Lås en version med -ArtifactBaseUrl "https://get.realizer.io/public/accesspoint/2.0.67" för reproducerbara driftsättningar med integritetskontroll (skriptet kontrollerar den publicerade SHA-256-summan och avbryter vid avvikelse).
Kör infrastrukturdelarna själv istället:
$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
Beviljande av Graph-behörigheter. App Services hanterade identitet behöver dessa programbehörigheter i Microsoft Graph: Mail.Send, User.ReadBasic.All, TeamsAppInstallation.ReadForUser.All, Application.Read.All, AppCatalog.Read.All, samt (aktiverad som standard, kan väljas bort) AiEnterpriseInteraction.Read.All för Copilot capture. Den enklaste vägen är sidan för att slutföra konfigurationen — driftsättningens utdata finishSetupUrl — som beviljar dem alla i en enda idempotent omgång med hjälp av en global administratörs delegerade inloggning. Bevilja dem i stället 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
}
# Fullständig stopp/start (INTE omstart) rensar cacheminnet för hanterad identitets-token
az webapp stop --name $appName --resource-group $ResourceGroup
Start-Sleep -Seconds 10
az webapp start --name $appName --resource-group $ResourceGroup
Verifiera: öppna https://<api-url>/api/health i webbläsaren och bekräfta ett friskt svar.
Valfria AI-kapabiliteter
Mallen exponerar fyra valfria kapabiliteter, varav ingen krävs för att köra AccessPoint. AI Assist, AI Search och Document Intelligence är avstängda om du inte aktiverar dem vid driftsättningen; Copilot capture-behörigheten beviljas som standard men kan väljas bort (formuläret Deploy to Azure, -p name=value på az deployment, eller växlarna i Deploy-AccessPoint.ps1 som anges nedan styr alla fyra). Alla AI-resurser driftsätts i din egen Azure-prenumeration med autentisering enbart via hanterad identitet — ingen kunddata lämnar din klientorganisation, och Microsoft tränar inte modeller på den.
- Deploy AI Assist (Azure OpenAI) — lägger till en Azure OpenAI-resurs i din prenumeration med autentisering via hanterad identitet (inga API-nycklar). Debiteringen sker per användning, så en vilande klientorganisation betalar ungefär 0 USD och en aktiv avdelning spenderar vanligtvis ensiffriga dollarbelopp per månad. Att driftsätta den aktiverar AI Assist-funktionerna, som var och en kan slås på och av individuellt under Inställningar > Funktioner. Varje AI-utdata är ett förslag eller ett redigerbart utkast — en människa beslutar alltid.
- Deploy AI Search (
deployAiSearch=true) — lägger till Azure AI Search så att sökrutan i Dokument matchar ord inuti dokument (extraherad PDF-text) utöver namn, typer och taggar; med AI Assist också driftsatt stöds semantisk sökning. Nya dokument indexeras automatiskt, och en administratörskörning (Inställningar > Grundkonfiguration > Sökning i dokumentinnehåll) indexerar dem som fanns dessförinnan. - Deploy Document Intelligence (
deployDocumentIntelligence=true) — lägger till Azure AI Document Intelligence för OCR: skannade, bildbaserade dokument får sin text inläst så att de deltar i innehållssökning, dubblettidentifiering, AI-sammanfattningar och maskeringsförslag precis som alla andra dokument. Debiteringen sker per sida (ungefär 1,50 USD per 1 000 sidor). Utan den matchar skannade dokument fortfarande på namn, typ och taggar. - Copilot capture-behörighet (
AiEnterpriseInteraction.Read.All) — denna klientorganisationsomfattande Graph-behörighet beviljas som standard, så att förvaltare direkt kan fånga Copilot-interaktionshistorik via Dokument > Lägg till från Microsoft 365. Den är enbart en programbehörighet (Microsoft Graph erbjuder ingen delegerad variant), men AccessPoint läser alltid bara den inloggade användarens egen Copilot-historik. Klientorganisationer som tillämpar minsta möjliga behörighet kan välja bort den medDeploy-AccessPoint.ps1 -DisableCopilotCapture(ellergrantCopilotCapturePermission=falsepå ARM/Bicep-mallen) och kan när som helst återkalla approllen i Entra ID; de fem standardbehörigheterna för Graph ovan påverkas inte.
Steg 2: Installera AccessPoint-apparna
Installera SharePoint-lösningen först, sedan Teams-appen.
SharePoint-lösning. Från AppSource-listningen, klicka på Skaffa nu och godkänn den till din SharePoint-appkatalog, driftsatt för hela klientorganisationen. Alternativt, ladda upp manuellt (SharePoint administrationscenter > Fler funktioner > Appar > Ladda upp, markera "Gör den här lösningen tillgänglig för alla webbplatser") eller låt skriptet göra det.

Teams-app. Från AppSource-listningen, klicka på Skaffa nu och godkänn den i Teams administrationscenter, eller installera båda apparna via skriptet (den inloggade användaren behöver SharePoint-administratör samt Teams-administratör eller global administratör):
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-SkipInfrastructure -SkipGraphPermissions `
-DeploySharePointApp -DeployTeamsApp
Använd INTE SharePoints "Synkronisera till Teams". Det åsidosätter tyst manifestets
webApplicationInfo.id, vilket bryter aviseringar i Teams aktivitetsflöde. Ladda upp Teams-appen direkt till Teams administrationscenter.
Verifiera: lösningen visas i appkatalogen utan fel, och AccessPoint visas som Tillåten under Teams administrationscenter > Hantera appar.
Steg 3: Godkänn API-behörigheter
SPFx-paketet begär delegerade behörigheter som en SharePoint-administratör måste godkänna. I SharePoint administrationscenter, gå till Avancerat > API-åtkomst och godkänn varje väntande AccessPoint-begäran: access_as_user på AccessPoint-API:et, samt Graph-omfång för personväljarna och Lägg till från Microsoft 365-källorna — User.Read.All, Sites.Read.All, Files.Read.All, Mail.Read och Mail.Read.Shared (egna och delade/mottagningsbrevlådor), Calendars.Read och Calendars.Read.Shared, Chat.Read, ChannelMessage.Read.All, Team.ReadBasic.All, Channel.ReadBasic.All (Teams-chattar och -kanaler) samt Notes.Read och Notes.Read.All (OneNote). .Shared-omfången utökar aldrig åtkomsten på egen hand — Graph upprätthåller fortfarande varje användares befintliga Exchange-brevlådebehörigheter.


Eller godkänn 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
}
Slutligen beviljar en global administratör administratörsgodkännande för utgivarens app för flera klientorganisationer genom att öppna https://login.microsoftonline.com/common/adminconsent?client_id=ed19c96c-a7c5-4dca-8b47-0899c406329f i en webbläsare.
Verifiera: sidan för API-åtkomst visar inga väntande AccessPoint-begäranden.
Steg 4: Använd AccessPoint i SharePoint eller Teams
SharePoint: redigera eller skapa en sida, klicka på +, sök efter AccessPoint, lägg till webbdelen och publicera.
Teams: användare hittar AccessPoint under Appar > Byggd för din organisation (sökindexering kan ta 15 minuter upp till flera timmar efter den första installationen). Fäst den valfritt för alla via Teams administrationscenter > Principer för appinställning genom att lägga till AccessPoint under Installerade appar och Fästa appar.
Steg 5: Konfiguration av API-URL (vanligtvis automatisk)
Webbdelen upptäcker API-URL:en automatiskt. AccessPoint-API:et självregistrerar sin adress hos Realizer-plattformen när det validerar sin licens — inom några minuter efter att App Service har startat — och webbdelen hämtar den därifrån. I de flesta driftsättningar finns det inget att göra här.
Verifiera: läs in webbdelen på nytt — instrumentpanelen laddas istället för konfigurationsprompten. Om API:et just har driftsatts lyckas upptäckten vid nästa sidladdning efter den första lyckade licensvalideringen.
Ställa in API-URL:en manuellt (valfritt)
Du behöver bara detta för att åsidosätta den automatiska upptäckten — till exempel för att låsa webbdelen till en anpassad domän.
Alternativ A — konfigurationspanelen. Öppna webbdelen, gå till Inställningar > Konfiguration, ange API-URL:en (App Service-URL:en från steg 1, t.ex. https://app-accesspoint-contoso.azurewebsites.net) och klicka på Spara. Panelen validerar HTTPS innan den sparar, och en manuellt angiven URL har företräde framför den automatiska upptäckten.

Alternativ B — lagringsentitet (PowerShell). Lås URL:en i en AccessPoint_ApiUrl-lagringsentitet, som har företräde framför den automatiska upptäckten. Sedan januari 2026 blockerar SharePoint skrivningar till egenskapspåsen på no-script-appkatalogen (meddelandecenter MC1186368), så en SharePoint-administratör måste tillåta dem en gång, för hela klientorganisationen, innan lagringsentiteten kan skrivas:
# 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
Steg 6: Importera ett jurisdiktionspaket
Gå till Inställningar > Jurisdiktionspaket, välj paketet för din jurisdiktion (Kanada ATIA, USA FOIA, EU GDPR med flera) och klicka på Importera. Paketet skapar begärandetyper, förlängningsskäl, valfält, aviseringsmallar och översättningar. Granska och anpassa de importerade objekten efteråt.
Steg 7: Tilldela användarroller
Den första användaren som öppnar AccessPoint tilldelas automatiskt rollen Administratör — den enda inbyggda rollen, som alltid ger alla behörigheter. Alla andra roller definieras av klientorganisationen: att importera ett jurisdiktionspaket sår färdiga roller (till exempel Request Coordinator, den de facto-roll som fungerar som handläggare för tillgång och integritet), och du kan döpa om eller omforma dem under Inställningar > Roller och behörigheter. Gå till Inställningar > Hantera användare, klicka på Lägg till användare, sök i din katalog och tilldela minst en administratör och en samordnare; åtkomst som Förvaltare, Medarbetare, Granskare och Läsare följer automatiskt av det arbete du tilldelar personer.
AccessPoint är nu klart för användning.
Uppdatera AccessPoint
AccessPoint talar om när en nyare version är tillgänglig — det finns inget att prenumerera på eller söka av manuellt:
- Under rutinmässig licensvalidering rapporterar Realizer Platform den senast publicerade AccessPoint-versionen (den version som senast befordrats till kundens utgivningskanal). Ingen användnings- eller ärendedata ingår i denna kontroll.
- När den publicerade versionen är nyare än den ditt API kör ser administratörer en avisering om Uppdatering tillgänglig på instrumentpanelen och i Grundkonfiguration, som visar aktuellt och senaste versionsnummer.
- När du är à jour (eller kör en förhandsversion nyare än den publicerade utgåvan) visar Grundkonfiguration "Ditt AccessPoint-API är uppdaterat."
Så här tillämpar du en uppdatering:
- Under Inställningar > Grundkonfiguration, klicka på Driftsätt uppdatering till Azure. Detta öppnar Azure-portalen med den senaste ARM-mallen — samma mall som används vid den första driftsättningen.
- Välj driftsättningstypen Uppgradera befintlig installation. Detta bevarar operatörstillagda programinställningar och lämnar databasåtkomsten orörd; databasschemat uppgraderas automatiskt vid API-uppstart (DacPac-migrering).
- Uppdatera SPFx-paketet: ladda upp det senaste
accesspoint.sppkgtill din appkatalog (steg 2 ovan). Uppdatera Teams-apppaketet i Teams administrationscenter om en nyaccesspoint-teams.ziphar släppts. - Besök sidan Slutför konfigurationen igen efter uppgraderingen — den beviljar idempotent alla Graph-behörigheter som tillkommit sedan din ursprungliga driftsättning.
Exempeldata för utvärderingsklientorganisationer. För demo- och utvärderingsmiljöer kan en separat webbdel, AccessPoint DevTools (
accesspoint-devtools.sppkg), återställa en klientorganisation och så jurisdiktionsanpassad exempeldata — testanvändare, förfrågningar, uppdrag och genererade dokument — med ett enda klick på Återskapa demo. Den återanvänder huvudappens API-anslutning och deklarerar sina egna API-behörigheter (godkänns en gång under SharePoint-administratör > Avancerat > API-åtkomst). Inte för produktion: de destruktiva återställningsslutpunkterna aktiveras endast när App Service-inställningenDevTools:Enabled=trueär satt — driftsätt paketet endast till utvecklings-/demoklientorganisationer.
Datasekretess för Teams-aviseringar (valfritt)
Alla förfrågningsposter, den sökandes personuppgifter, dokument och revisionshistorik finns bara i din egen klientorganisation. Aviseringar respekterar det också. AccessPoint levererar varje avisering på upp till tre kanaler, och två av dem lämnar aldrig din klientorganisation: appflödet (som levereras från ditt eget API) och e-post/Outlook (som skickas från din egen delade brevlåda via Mail.Send). Teams aktivitetsflöde är den enda kanalen som i sitt standardläge POSTar en liten payload till Realizer Platform API — vilket enbart existerar eftersom Microsoft Graph kräver att en aktivitetsavisering skickas av appen som äger Teams-manifestet. Utgivaren lagrar ingenting av det och loggar endast mottagar- och klientorganisations-GUID, och samma aviseringar anländer ändå via e-post och i appflödet. Två kontroller stramar åt eller tar bort även detta:
Minimera (en växel). Under Inställningar > Konfiguration > Teams-aviseringar, aktivera Minimera innehåll i Teams-aviseringar (integritet). Den vidarebefordrade payloaden ersätter då aviseringens titel/förhandsgranskningstext och den agerande användarens namn med neutrala platshållare, så att inga uppdrags-/uppgiftsnamn, aviseringstext eller personnamn lämnar klientorganisationen — endast aktivitetstyp, förfrågningsnummer och postidentifierare transiterar fortfarande så att aviseringen kan dirigeras och djuplänkas. Den fullständiga texten visas fortfarande i appflödet. Ingen manifeständring krävs. (Under huven: klientorganisationsinställningen Notifications:TeamsMinimalPayload.)
Eliminera (självhosta reläet). En klientorganisation som inte får skicka någon aviseringsdata till utgivaren kan låta sitt eget API anropa Graph direkt med sin hanterade identitet, så att ingenting når api.realizer.io:
- Bevilja
TeamsActivity.Send(programbehörighet) till API:ets hanterade identitet och administratörsgodkänn det — Graph tillåter bara att appen som äger Teams-manifestet skickar aktivitetsaviseringar, så den sändande identiteten måste matcha manifestetswebApplicationInfo.id. - Peka Teams-manifestet på din egen app. I
manifest.json, sättwebApplicationInfo.idtill din API-appregistrering/hanterade identitets klient-ID (i stället för utgivarens app-ID), och lämnawebApplicationInfo.resourcesom SharePoint-webbplatsens domän. Ladda upp den redigerade zip-filen direkt i Teams administrationscenter — använd inte SharePoints "Synkronisera till Teams" (det skriver omwebApplicationInfo). - Växla API:et till direktrelä — lägg till App Service-inställningen
Notifications__TeamsRelayMode=Direct(standard/ej angivet =Publisher) och starta om. API:et anropar nusendActivityNotificationsjälv; utgivarens företagsappbeviljande behövs inte längre för aviseringar. - Validera på nytt — skicka en testavisering (bekräfta att den djuplänkar) och bekräfta att den personliga Teams-fliken fortfarande loggar in, eftersom du ändrade
webApplicationInfo.id.
Direktrelä håller 100 % av aviseringsinnehållet inom klientorganisationen men innebär att du måste underhålla ett anpassat Teams-manifest och godkänna på nytt när app-ID:t ändras. De flesta klientorganisationer som bara behöver undertrycka fritext och personnamn bör i stället använda växeln Minimera — ingen manifeständring, och aviseringen djuplänkar fortfarande.
Driftsättning för flera klientorganisationer
Använd det här mönstret när Azure-backend finns i en annan Entra ID-klientorganisation än din Microsoft 365-klientorganisation — ett delat tjänsteteam som betjänar flera affärsenheter, en MSP som hostar åt kunder, eller separata Azure/M365-klientorganisationer av styrningsskäl. En enda driftsättning kan betjäna flera M365-klientorganisationer: API:et separerar data efter klientorganisations-ID i varje användares token, med databasfrågefilter avgränsade per klientorganisation och blob-sökvägar med klientorganisationsprefix. Varje M365-klientorganisation behöver ändå sin egen licens, sin egen SPFx-driftsättning och egna godkännanden av API-behörigheter, samt sina egna Graph-autentiseringsuppgifter och aviseringsbrevlåda.
Graph-appregistrering. En hanterad identitet fungerar bara i sin hemklientorganisation, så skapa en appregistrering för en enda klientorganisation i M365-klientorganisationen (t.ex. AccessPoint Graph Connector), bevilja den samma Graph-programbehörigheter som anges i steg 1, med administratörsgodkännande, skapa sedan en klienthemlighet och koppla den till App Service via Key Vault:
# I M365-klientorganisationen: skapa klienthemligheten
$secret = az ad app credential reset --id $appId --display-name "AccessPoint" --years 2 --query password -o tsv
# I Azure-prenumerationen: lagra hemligheten och referera till den från 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
Lagra aldrig hemligheten direkt i App Service-inställningarna; App Services hanterade identitet behöver rollen Key Vault Secrets User på valvet. När alla tre Graph__*-inställningarna finns använder API:et appregistreringen; när de saknas faller det tillbaka på den hanterade identiteten för driftsättningar inom samma klientorganisation.
Delad brevlåda och principer för programåtkomst. Skapa en olicensierad delad brevlåda i M365-klientorganisationen för e-postaviseringar, och avgränsa Mail.Send så att appen bara kan skicka från den brevlådan:
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"
# Verifiera (spridning kan ta upp till 30 minuter)
Test-ApplicationAccessPolicy -AppId $appId -Identity "accesspoint-noreply@contoso.com" # expect: Granted
Test-ApplicationAccessPolicy -AppId $appId -Identity "someother@contoso.com" # expect: Denied
Varje M365-klientorganisation upprepar sedan steg 2–5 (appar, godkännanden, API-URL — samma API-URL betjänar alla klientorganisationer). Aviseringar i Teams aktivitetsflöde kräver dessutom administratörsgodkännande för Realizers företagsapp och att Teams-appen installeras för användarna; se Grundläggande konfiguration för mer information.
Återställning och drift
Standardmekanismer i Azure täcker återställning: driftsätt om ett tidigare API-paket från historiken i App Services Deployment Center, återställ Azure SQL med tidpunktsåterställning (upp till 35 dagar), och ladda upp en tidigare versionerad .sppkg till appkatalogen igen. Import av jurisdiktionspaket är additiv och återställs via databasåterställning. För den fullständiga driftshandboken — detaljerade återställningsprocedurer, övervakning och underhållsuppgifter — kontakta vårt supportteam.