API voor effectieve machtigingen
De API-pagina effectivePermissions vertelt een MCP-client wat de aangemelde gebruiker mag doen in Microsoft Dynamics 365 Business Central, voordat de client het probeert. Ze geeft één rij terug per API-pagina in de omgeving, met de oordelen van de aanroeper voor lezen, invoegen, wijzigen, verwijderen en uitvoeren. Een MCP-client zoals de BC MCP Pro-connector gebruikt ze om de tools te verbergen die een gebruiker niet mag gebruiken, met één aanroep in plaats van elke pagina te proberen.
De pagina is alleen-lezen. Ze rapporteert alleen: niets van wat ze teruggeeft, verruimt of beperkt wat een gebruiker kan doen. Business Central blijft de handhaver.
Het eindpunt
GET https://api.businesscentral.dynamics.com/v2.0/{environment}/api/vangelderSolutions/mcpguard/v1.0/companies({companyId})/effectivePermissions
De pagina is MCP Guard Eff. Permissions (73633175). De gebruiker heeft de machtigingenset MCP GUARD - USER nodig. Voeg de pagina toe aan de MCP-configuratie met Allow Read ingeschakeld om ze aan een MCP-client aan te bieden. Zie MCP-configuraties.
De velden
| Veld | Betekenis |
|---|---|
pageId, pageName | De API-pagina, bijvoorbeeld 30009, APIV2 - Customers. |
apiPublisher, apiGroup, apiVersion, entitySetName | Waar de pagina zich in de API bevindt. |
sourceTableId, sourceTableName | De brontabel van de pagina. |
canRead | Of de gebruiker de brontabel mag lezen. Machtigingensets, beveiligingsgroepen en licentierechten zijn meegerekend. |
canInsert, canModify, canDelete | Of de machtigingensets van de gebruiker directe machtiging geven op de brontabel. |
canExecute | Of de gebruiker de pagina zelf mag uitvoeren. Zonder die machtiging mislukt elke aanroep, wat de tabelmachtigingen ook zeggen. |
hasSecurityFilter, securityFilter | Of voor deze gebruiker een beveiligingsfilter geldt op de brontabel, en welke. |
De oordelen worden berekend op het moment van de aanroep, alleen voor de aanroeper. Een gebruiker kan de oordelen van een andere gebruiker niet lezen.
Hoe de oordelen worden bepaald
Lezen komt van Business Central zelf, en weerspiegelt dus alles wat Business Central op een leesbewerking toepast: machtigingensets, beveiligingsgroepen en licentierechten.
Invoegen, wijzigen, verwijderen en uitvoeren komen uit de machtigingensets die aan de gebruiker zijn toegewezen in het huidige bedrijf. Alleen directe machtiging telt. Indirecte machtiging telt niet, omdat een API-pagina de bewerking rechtstreeks uitvoert. Een gebruiker met de machtigingenset SUPER krijgt voor alle vier waar.
Het beveiligingsfilter is het filter op de leesmachtiging van de gebruiker voor de brontabel. Als een van de machtigingensets van de gebruiker de tabel zonder filter geeft, past Business Central geen filter toe, en meldt de pagina er geen.
Wat de pagina niet kan zien
- Licentierechten voor schrijfbewerkingen. Een licentie kan een invoeging die de machtigingenset toelaat, nog altijd blokkeren.
- Tabellen die een API-pagina in code leest naast haar brontabel.
- Filters die in toepassingscode zitten.
canRead onwaar en canExecute onwaar zijn dus veilig om op te handelen: de MCP-client kan de tool verbergen. canRead waar betekent dat de brontabel leesbaar is, niet dat elke aanroep zal slagen. Lees de schrijfoordelen als "de machtigingenset laat het toe". Als Business Central een aanroep weigert, is die weigering definitief.
Kosten
De pagina berekent een oordeel voor elke API-pagina in de omgeving. In een meting op een sandbox met versie 28 duurden 315 API-pagina's ongeveer 12 seconden. Een MCP-client roept de pagina het best één keer per sessie aan, niet één keer per toolaanroep.