Architettura di Power Pages
Power Pages è la soluzione low-code per costruire siti web pubblici e portali rivolti a utenti esterni all’organizzazione (clienti, cittadini, partner), con i dati salvati direttamente in Microsoft Dataverse. A differenza di canvas e model-driven app — pensate per utenti interni con licenza e ruolo di sicurezza Dataverse — Power Pages espone i dati verso un pubblico anonimo o autenticato tramite un identity provider esterno.
I componenti chiave dell’architettura sono:
- Pages e templates: la struttura visuale del sito, basata su web templates che usano il linguaggio Liquid per il rendering server-side dei dati Dataverse.
- Web roles e table permissions: il modello di sicurezza (vedi sotto).
- Data components: lists (viste read-only o con azioni), basic/advanced forms e multistep forms per operazioni CRUD guidate.
- Authentication: gestita da Microsoft Entra ID, Entra External ID (scenari B2C), o provider come Google/Facebook/SAML. L’identità dell’utente esterno viene mappata a un record Contact in Dataverse.
Modello di sicurezza: web roles e table permissions
Questo è il cuore concettuale dell’unità. La sicurezza di Power Pages non riusa i ruoli di sicurezza Dataverse dell’utente autenticato: usa un modello proprio a due livelli.
- Web roles: raggruppano gli utenti del portale. Esistono due ruoli speciali automatici — Anonymous Users (visitatori non loggati) e Authenticated Users (loggati). Puoi creare web role custom (es. “Partner premium”) assegnati ai contact.
- Table permissions: definiscono, per una tabella, i privilegi (Create, Read, Write, Delete, Append/AppendTo) e — soprattutto — l’access type (lo scope):
- Global: accesso a tutti i record della tabella.
- Contact: solo i record collegati al contact loggato.
- Account: record dell’account dell’utente (tipico B2B, dove un dipendente vede i dati della sua azienda).
- Self: il record del proprio contact.
Il principio fondamentale: una table permission deve essere associata a uno o più web role. Nessun dato Dataverse è visibile di default; l’accesso è deny-by-default.
Interagire con i dati
- Lists: renderizzano una vista Dataverse. Ideali per elenchi read-only o con link verso form di dettaglio.
- Basic forms e multistep forms: legano una form model-driven a operazioni di insert/update/read. Sono la via low-code per il CRUD lato utente.
- Power Pages Web API: espone endpoint REST (
/_api/<entityset>) per operazioni CRUD client-side in JavaScript, utili per griglie dinamiche, validazioni custom o interazioni AJAX senza postback. Va abilitata esplicitamente tramile le site settings (es.Webapi/<table>/enabled = trueeWebapi/<table>/fields), e rispetta comunque le table permissions.
GET /_api/contacts?$select=fullname,emailaddress1
Quando usare Power Pages vs canvas vs model-driven
- Power Pages: utenti esterni senza licenza Power Apps, accesso anonimo o via B2C/B2B, brand pubblico, SEO. Es. portale self-service clienti, form di registrazione eventi, community partner.
- Canvas app: UX altamente custom per utenti interni licenziati, layout pixel-perfect, connettori multipli.
- Model-driven app: applicazioni gestionali data-centric interne, guidate dal modello Dataverse.
Regola d’esame: se lo scenario parla di utenti esterni/anonimi o autenticazione B2C/B2B, la risposta è quasi sempre Power Pages.
Trappole tipiche d’esame
- Scenario: i dati non compaiono nel portale nonostante lista e form corrette → risposta: mancano le table permissions; l’accesso è deny-by-default e va concesso esplicitamente, sia per Anonymous che per Authenticated.
- Scenario: una table permission è creata ma non ha effetto → risposta: non è stata associata a un web role. Permission senza web role = nessun accesso.
- Scenario: B2B, un utente deve vedere i record di tutta la sua azienda ma non degli altri clienti → risposta: access type Account (non Global né Contact).
- Scenario: JavaScript client-side deve leggere/scrivere Dataverse dal portale → risposta: Power Pages Web API abilitata via site settings, comunque soggetta alle table permissions.
- Scenario: utenti esterni senza licenza Power Apps devono accedere ai dati → risposta: Power Pages, non una canvas o model-driven app.