Passaggio all'ora solare 25 ottobre 2020 03:0002:00 sposta indietro l'orologio di 1 ora (si dorme 1 ora in più)
Spesso è necessario accedere a SharePoint Online da applicazioni esterne, ad esempio una Azure App Function scritta in C# o una console application.
E' possibile concedere l'accesso tramite gli Add-in Permissions di SharePoint (chiamati anche apps for SharePoint). Si tratta di un un metodo sicuro per garantire l'accesso a delle risorse SharePoint limitando l'ambito (scope).
Questo sistema per garantire l'accesso alle risorse funziona con SharePoint Online, SharePoint 2013 e SharePoint 2016

Registrare un ADD-In


Non esiste un link, nell'interfaccia SharePoint, per raggiungere la pagina di registrazione, va composto aggiungendo /_layouts/15/appregnew.aspx al sito corrente', ad esempio https://sgart.sharepoint.local/event...regnew.aspx.
Creazione App-onlyCreazione App-only
Devi premere i pulsanti Generate per creare il Client Id e il Client Secret.
I parametri App Domain e Redirect URI sono ininfluenti impostarli, rispettivamente, a localhost e https://localhost .
Attenzione, prima di salvare, copia i valori di Client Id e Client Secret che serviranno successivamente
Conferma creazioneConferma creazione

Garantire l'accesso


Il passo successivo è garantire un accesso alla risorsa che ci interessa che può essere a livello di sitecollection, web, list e tenant.
Oltre al tipo di permesso da concedere: Read, Write, Manage e FullControl.

Questo si fa dalla pagina /_layouts/15/AppInv.aspx nello stesso sito del passo precedente.

Per procedere copia il Client Id nel campo App Id e premi Lookup, questo valorizzerà i campi Title, App Domains e Redirect URL:
Garantire l'accessoGarantire l'accesso
In questo caso sto garantendo un accesso a livello di lista (scope).
Quello che determina lo scope, è la stringa contenuta nel campo Permission Request XML:
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl"/></AppPermissionRequests>
in questo esempio lo scope è impostato a livello di lista identificato dalla costante stringa http://sharepoint/content/sitecollection/web/list .
va sempre aggiunto l'attributo AllowAppOnlyPolicy="true", il permesso dovrà essere approvato da un site collection administrator

Per procedere al passo successivo, premi Create.

Trust


Dato che la richiesta di accesso è a livello di lista, la schermata successiva chiede di scegliere a quale lista dare accesso:
Garantire l'accesso alla listaGarantire l'accesso alla lista
che va confermata con il pulsante Trust it.

Verifica


Posso verificare le app create andando in Site settings / Site collection app permissions (scope site collection) oppure Site settings / Site app permissions (scope web), dipende dalla versione,, che corrisponde alla url /_layouts/15/appprincipals.aspx (in questo caso la url è riferita alla site collection)
Site settings / Site collection app permissionsSite settings / Site collection app permissions
che mostra questo elenco
Elenco app permissionsElenco app permissions
Nell'elenco compaiono solo le app a cui sono state concesse delle autorizzazioni, ovvero il completamento dell pagina /_layouts/15/AppInv.aspx

Valori arributi


I valori possibili per l'attributo Scope specificate nell'XML precedente:
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl" /></AppPermissionRequests>
sono:mentre i valori possibili per l'attributo Right sono:
  • Read: solo lettura
  • Write: lettura e scrittura
  • Manage
  • FullControl
Attenzione è molto importante che sia presente l'attributo AllowAppOnlyPolicy="true". Il permesso dovrà essere approvato da un site collection administrator.

Your tenant administrator has to approve this app


Se usate le permission a livello di tenant
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" /></AppPermissionRequests>
e compare questo errore
Your tenant administrator has to approve this app.
bisogna modificare la url in questo modo puntando all'admin del tenant ([tenantname]-admin):
https://[tenantname]-admin.sharepoint.com/_layouts/15/appinv.aspx
e confermare con Trust it

Per un esempio di utilizzo in C# vedi Accedere a SharePoint Online tramite Add-in permissions in .NET 4.7.2.

Possibili errori


Se compare questo messaggio
The element 'AppPermissionRequests' in namespace 'http://schemas.microsoft.com/sharepo...app/manifest ' cannot contain text. List of possible elements expected: 'AppPermissionRequest' in namespace 'http://schemas.microsoft.com/sharepo...app/manifest '.
eliminare eventuali spazi nell'XML del campo Permission Request XML.

Così va bene
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Write" /></AppPermissionRequests>
così è sbagliato
<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Write" />
</AppPermissionRequests>


Vedi anche Granting access using SharePoint App-Only, Add-in permissions in SharePoint e Add-in authorization policy types in SharePoint.