Problema relativo alle autorizzazioni di Microsoft Entra
Articolo
Quando si registra l'app Microsoft Entra, si concede l'autorizzazione per accedere a varie API. Quando le esigenze cambiano, è possibile modificare queste autorizzazioni. Questo articolo illustra i passaggi da eseguire.
Nota
Le autorizzazioni dell'app Microsoft Entra sono applicabili solo per questi scenari:
Incorporare contenuto per l'organizzazione
Incorporare contenuto per i clienti con il metodo di autenticazione utente master
Modificare le impostazioni di autorizzazione nell'app Microsoft Entra
Le modifiche alle autorizzazioni possono essere apportate a livello di codice o nel portale di Azure.
Selezionare il tenant di Microsoft Entra selezionando l'account nell'angolo in alto a destra della pagina.
Selezionare Registrazioni app. Se questa opzione non è visibile, cercarla.
Selezionare l'app nella scheda Applicazioni di cui si è proprietari. L'applicazione verrà aperta nella scheda Panoramica, in cui è possibile verificare l'ID applicazione.
Selezionare la scheda Visualizza autorizzazioni API.
Seleziona Aggiungi autorizzazione.
Per aggiungere le autorizzazioni, seguire questa procedura (si noti che il primo passaggio è diverso per le app GCC):
Nella scheda API Microsoft selezionare Servizio Power BI.
Nota
Per le app GCC, selezionare la scheda API usate dall'organizzazione e cercare Microsoft Power BI Government Community Cloud oppure fc4979e5-0aa5-429f-b13a-5d1365be5566.
Selezionare Autorizzazioni delegate e aggiungere o rimuovere le autorizzazioni specifiche necessarie.
Al termine, selezionare Aggiungi autorizzazioni per salvare le modifiche.
Per rimuovere un'autorizzazione, seguire questa procedura:
Selezionare i puntini di sospensione (...) a destra dell'autorizzazione.
Selezionare Rimuovi autorizzazione.
Nella finestra popup Rimuovi autorizzazione selezionare Sì, rimuovi.
Per modificare le autorizzazioni dell'app di Microsoft Entra a livello di codice, sarà necessario ottenere le entità servizio (utenti) esistenti all'interno del tenant. Per informazioni su come eseguire questa operazione, vedere servicePrincipal.
Per ottenere tutte le entità servizio all'interno del tenant, chiamare l'API Get servicePrincipal senza {ID}.
Cercare un'entità servizio usando l'ID applicazione dell'app come proprietà appId. (displayName è facoltativo.)
Concedere a Power BI le autorizzazioni per l'app assegnando uno di questi valori a consentType:
AllPrincipals - Può essere usato solo da un amministratore di Power BI per concedere autorizzazioni per conto di tutti gli utenti nel tenant.
Principal - Usato per concedere autorizzazioni per conto di un utente specifico. Se si usa questa opzione, aggiungere la proprietà principalId={User_ObjectId} al corpo della richiesta.
Se si usa un utente master, per evitare che venga richiesto il consenso da Microsoft Entra ID, è necessario concedere le autorizzazioni all'account master.
Il valore resourceIdc78a3685-1ce7-52cd-95f7-dc5aea8ec98e è dipendente dal tenant e non è universale. Questo è il valore objectId dell'applicazione Servizio Power BI in Microsoft Entra ID. Per ottenere questo valore dal portale di Azure, passare ad Applicazioni aziendali > Tutte le applicazioni e cercare Servizio Power BI.
Concedere le autorizzazioni per l'app a Microsoft Entra ID assegnando un valore a consentType.
È anche possibile modificare le autorizzazioni dell'app di Microsoft Entra usando C#. Per altre informazioni, vedere l'API oAuth2PermissionGrant. Questo metodo può essere utile se si sta valutando di automatizzare alcuni processi.
var graphClient = GetGraphClient();
currentState.createdApp = await graphClient.Applications
.Request()
.AddAsync(application);
System.Threading.Thread.Sleep(2000);
var passwordCredential = new PasswordCredential
{
DisplayName = "Client Secret Created in C#"
};
currentState.createdSecret = await graphClient.Applications[currentState.createdApp.Id]
.AddPassword(passwordCredential)
.Request()
.PostAsync();
var servicePrincipal = new ServicePrincipal
{
AppId = currentState.createdApp.AppId
};
currentState.createdServicePrincipal = await graphClient.ServicePrincipals
.Request()
.AddAsync(servicePrincipal);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
// Use oAuth2PermissionGrant to change permissions
var oAuth2PermissionGrant = await graphClient.Oauth2PermissionGrants["{id}"]
.Request()
.GetAsync();