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).
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-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 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'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 lista che va confermata con il pulsante
Trust it.
Per dare le grant bisogna essere site collection administrator.
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 permissions che mostra questo elenco
Elenco 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 itPer 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
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.