Concedere l'accesso a SharePoint alle app esterne tramite Add-in Permissions
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).
I parametri App Domain e Redirect URI sono ininfluenti impostarli, rispettivamente, a localhost e https://localhost .
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: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:
in questo esempio lo scope è impostato a livello di lista identificato dalla costante stringa http://sharepoint/content/sitecollection/web/list
.
Per procedere al passo successivo, premi Create.
sono:
e compare questo errore
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.
Così va bene
così è sbagliato
Vedi anche Granting access using SharePoint App-Only, Add-in permissions in SharePoint e Add-in authorization policy types in SharePoint.
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. 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
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: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:
XML
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl"/></AppPermissionRequests>
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: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)che mostra questo elencoNell'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:XML
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl" /></AppPermissionRequests>
- http://sharepoint/content/tenant per assegnare dei permessi a livello di tutto il tenant SharePoint
- http://sharepoint/content/sitecollection per assegnare dei permessi a livello di tutta la site collection
- http://sharepoint/content/sitecollection/web per assegnare dei permessi a livello di site (web) e relativi sotto siti
- http://sharepoint/content/sitecollection/web/list per assegnare dei permessi alla singola lista
- 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 tenantXML
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" /></AppPermissionRequests>
Your tenant administrator has to approve this app.
bisogna modificare la url in questo modo puntando all'admin del tenant ([tenantname]-admin):Text
https://[tenantname]-admin.sharepoint.com/_layouts/15/appinv.aspx
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 messaggioThe 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
XML
<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Write" /></AppPermissionRequests>
XML
<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.