Programmgesteuertes Erteilen oder Widerrufen von API-Berechtigungen
Artikel
Wenn Sie einer Client-App api-Berechtigungen in Microsoft Entra ID erteilen, werden die Berechtigungserteilungen als Objekte aufgezeichnet, auf die wie alle anderen Daten zugegriffen, aktualisiert oder gelöscht werden kann. Die Verwendung von Microsoft Graph zum direkten Erstellen von Berechtigungserteilungen ist eine programmgesteuerte Alternative zur interaktiven Zustimmung und kann für Automatisierungsszenarien, Massenverwaltung oder andere benutzerdefinierte Vorgänge in Ihrer Organisation nützlich sein.
In diesem Artikel erfahren Sie, wie Sie App-Rollen für eine App mithilfe von Microsoft Graph gewähren und widerrufen.
App-Rollen, auch als Anwendungsberechtigungen oder Direktzugriffsberechtigungen bezeichnet, ermöglichen es einer App, eine API mit ihrer eigenen Identität aufzurufen. Erfahren Sie mehr über Anwendungsberechtigungen.
Achtung
Gehen Sie hierbei vorsichtig vor. Berechtigungen, die programmgesteuert gewährt werden, unterliegen nicht der Überprüfung oder Bestätigung. Sie treten sofort in Kraft.
Voraussetzungen
Zum Ausführen dieser Anweisungen benötigen Sie die folgenden Ressourcen und Berechtigungen:
Ein gültiger Microsoft Entra-Mandant.
Sie führen die Anforderungen in diesem Artikel in einem delegierten Kontext aus. Sie müssen die folgenden Schritte ausführen:
Melden Sie sich bei einem API-Client wie Graph-Explorer als Benutzer mit Berechtigungen zum Erstellen von Anwendungen im Mandanten an. Die Berechtigungen zum Erstellen von Berechtigungserteilungen können in Ihrem Mandanten durch vom Administrator konfigurierte App-Zustimmungsrichtlinien eingeschränkt oder gesteuert werden.
Stimmen Sie in der App, bei der Sie angemeldet sind, den delegierten Berechtigungen Application.Read.All und AppRoleAssignment.ReadWrite.All im Namen des angemeldeten Benutzers zu. Sie müssen nicht im Namen Ihrer Organisation zustimmen.
Rufen Sie die Objekt-ID des Clientdienstprinzipals ab, dem Sie App-Rollen gewähren. In diesem Artikel wird der Clientdienstprinzipal durch die ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94identifiziert. Erweitern Sie im Microsoft Entra Admin Center das Menü >Identität, erweitern Sie Anwendungen> und wählen Sie Unternehmensanwendungen>App-Anwendungen aus, um den Clientdienstprinzipal zu suchen. Wählen Sie ihn aus, und kopieren Sie auf der Seite Übersicht den Wert der Objekt-ID.
Achtung
Apps, denen die Berechtigung AppRoleAssignment.ReadWrite.All gewährt wurde, sollte nur von entsprechenden Benutzern aufgerufen werden.
Schritt 1: Abrufen der appRoles des Ressourcendienstprinzipals
Bevor Sie App-Rollen erteilen können, müssen Sie zuerst den Ressourcendienstprinzipal identifizieren, der die App-Rollen verfügbar macht, die Sie gewähren möchten. App-Rollen werden im appRoles-Objekt eines Dienstprinzipals definiert. In diesem Artikel verwenden Sie den Microsoft Graph-Dienstprinzipal in Ihrem Mandanten als Ressourcendienstprinzipal.
Anforderung
Die folgende Anforderung ruft die App-Rollen ab, die vom Microsoft Graph-Dienstprinzipal im Mandanten definiert sind.
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,appRoles
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "displayName eq 'Microsoft Graph'";
requestConfiguration.QueryParameters.Select = new string []{ "id","displayName","appId","appRoles" };
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphserviceprincipals "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals"
//other-imports
)
requestFilter := "displayName eq 'Microsoft Graph'"
requestParameters := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
Select: [] string {"id","displayName","appId","appRoles"},
}
configuration := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
servicePrincipals, err := graphClient.ServicePrincipals().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "displayName eq 'Microsoft Graph'";
requestConfiguration.queryParameters.select = new String []{"id", "displayName", "appId", "appRoles"};
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.service_principals.service_principals_request_builder import ServicePrincipalsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetQueryParameters(
filter = "displayName eq 'Microsoft Graph'",
select = ["id","displayName","appId","appRoles"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.service_principals.get(request_configuration = request_configuration)
Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals(id,displayName,appId,appRoles)",
"value": [
{
"id": "7ea9e944-71ce-443d-811c-71e8047b557a",
"displayName": "Microsoft Graph",
"appId": "00000003-0000-0000-c000-000000000000",
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allows the app to read user profiles without a signed in user.",
"displayName": "Read all users' full profiles",
"id": "df021288-bdef-4463-88db-98f22de89214",
"isEnabled": true,
"origin": "Application",
"value": "User.Read.All"
}
]
}
]
}
Schritt 2: Gewähren einer App-Rolle für einen Clientdienstprinzipal
In diesem Schritt gewähren Sie Ihrer App eine App-Rolle, die von Microsoft Graph verfügbar gemacht wird, was zu einer App-Rollenzuweisung führt. In Schritt 1 lautet 7ea9e944-71ce-443d-811c-71e8047b557a die Objekt-ID von Microsoft Graph, und die App-Rolle User.Read.All wird durch die ID df021288-bdef-4463-88db-98f22de89214identifiziert.
Anforderung
Die folgende Anforderung gewährt Ihrer Client-App (dem Prinzipal der ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94) eine App-Rolle der ID df021288-bdef-4463-88db-98f22de89214 , die von einem Ressourcendienstprinzipal der ID 7ea9e944-71ce-443d-811c-71e8047b557averfügbar gemacht wird.
Hinweis
Wenn Sie das Python SDK verwenden, importieren Sie die folgenden Bibliotheken:
from msgraph.generated.models.app_role_assignment import AppRoleAssignment
from msgraph.generated.models.service_principal import ServicePrincipal
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new AppRoleAssignment
{
PrincipalId = Guid.Parse("b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"),
ResourceId = Guid.Parse("7ea9e944-71ce-443d-811c-71e8047b557a"),
AppRoleId = Guid.Parse("df021288-bdef-4463-88db-98f22de89214"),
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].AppRoleAssignedTo.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
"github.com/google/uuid"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewAppRoleAssignment()
principalId := uuid.MustParse("b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94")
requestBody.SetPrincipalId(&principalId)
resourceId := uuid.MustParse("7ea9e944-71ce-443d-811c-71e8047b557a")
requestBody.SetResourceId(&resourceId)
appRoleId := uuid.MustParse("df021288-bdef-4463-88db-98f22de89214")
requestBody.SetAppRoleId(&appRoleId)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
appRoleAssignedTo, err := graphClient.ServicePrincipals().ByServicePrincipalId("servicePrincipal-id").AppRoleAssignedTo().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AppRoleAssignment appRoleAssignment = new AppRoleAssignment();
appRoleAssignment.setPrincipalId(UUID.fromString("b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"));
appRoleAssignment.setResourceId(UUID.fromString("7ea9e944-71ce-443d-811c-71e8047b557a"));
appRoleAssignment.setAppRoleId(UUID.fromString("df021288-bdef-4463-88db-98f22de89214"));
AppRoleAssignment result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").appRoleAssignedTo().post(appRoleAssignment);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\AppRoleAssignment;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new AppRoleAssignment();
$requestBody->setPrincipalId('b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94');
$requestBody->setResourceId('7ea9e944-71ce-443d-811c-71e8047b557a');
$requestBody->setAppRoleId('df021288-bdef-4463-88db-98f22de89214');
$result = $graphServiceClient->servicePrincipals()->byServicePrincipalId('servicePrincipal-id')->appRoleAssignedTo()->post($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.app_role_assignment import AppRoleAssignment
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = AppRoleAssignment(
principal_id = UUID("b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"),
resource_id = UUID("7ea9e944-71ce-443d-811c-71e8047b557a"),
app_role_id = UUID("df021288-bdef-4463-88db-98f22de89214"),
)
result = await graph_client.service_principals.by_service_principal_id('servicePrincipal-id').app_role_assigned_to.post(request_body)
GET https://graph.microsoft.com/v1.0/servicePrincipals/7ea9e944-71ce-443d-811c-71e8047b557a/appRoleAssignedTo
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].AppRoleAssignedTo.GetAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
appRoleAssignedTo, err := graphClient.ServicePrincipals().ByServicePrincipalId("servicePrincipal-id").AppRoleAssignedTo().Get(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AppRoleAssignmentCollectionResponse result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").appRoleAssignedTo().get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
result = await graph_client.service_principals.by_service_principal_id('servicePrincipal-id').app_role_assigned_to.get()
Das Antwortobjekt enthält eine Sammlung von App-Rollenzuweisungen für Ihren Ressourcendienstprinzipal und die App-Rollenzuweisung, die Sie in der vorherigen Anforderung erstellt haben.
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.ServicePrincipals["{servicePrincipal-id}"].AppRoleAssignedTo["{appRoleAssignment-id}"].DeleteAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.ServicePrincipals().ByServicePrincipalId("servicePrincipal-id").AppRoleAssignedTo().ByAppRoleAssignmentId("appRoleAssignment-id").Delete(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").appRoleAssignedTo().byAppRoleAssignmentId("{appRoleAssignment-id}").delete();
<?php
use Microsoft\Graph\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$graphServiceClient->servicePrincipals()->byServicePrincipalId('servicePrincipal-id')->appRoleAssignedTo()->byAppRoleAssignmentId('appRoleAssignment-id')->delete()->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.service_principals.by_service_principal_id('servicePrincipal-id').app_role_assigned_to.by_app_role_assignment_id('appRoleAssignment-id').delete()
Sie haben gelernt, wie Sie App-Rollenzuweisungen für einen Dienstprinzipal verwalten. Diese Methode zum Erteilen von Berechtigungen mithilfe von Microsoft Graph ist eine alternative interaktive Zustimmung und sollte mit Vorsicht verwendet werden.
In diesem Artikel erfahren Sie, wie Sie delegierte Berechtigungen für eine App mithilfe von Microsoft Graph gewähren und widerrufen.
Delegierte Berechtigungen, auch als Bereiche oder OAuth2-Berechtigungen bezeichnet, ermöglichen es einer App, eine API im Namen eines angemeldeten Benutzers aufzurufen. Erfahren Sie mehr über delegierte Berechtigungen.
Achtung
Gehen Sie hierbei vorsichtig vor. Berechtigungen, die programmgesteuert gewährt werden, unterliegen nicht der Überprüfung oder Bestätigung. Sie treten sofort in Kraft.
Voraussetzungen
Zum Ausführen dieser Anweisungen benötigen Sie die folgenden Ressourcen und Berechtigungen:
Ein gültiger Microsoft Entra-Mandant.
Sie führen die Anforderungen in diesem Artikel als Benutzer aus. Sie müssen die folgenden Schritte ausführen:
Melden Sie sich bei einem API-Client wie Graph-Explorer als Benutzer mit der Microsoft Entra-Rolle Cloudanwendungsadministrator an. Dies ist die Rolle mit den geringsten Berechtigungen zum Erstellen von Anwendungen und Erteilen der Zustimmung zu delegierten Berechtigungen im Mandanten. Die Berechtigungen zum Erstellen von Berechtigungserteilungen können in Ihrem Mandanten durch vom Administrator konfigurierte App-Zustimmungsrichtlinien eingeschränkt oder gesteuert werden.
Stimmen Sie in der App, bei der Sie angemeldet sind, den delegierten Berechtigungen Application.Read.All, DelegatedPermissionGrant.ReadWrite.All im Namen des angemeldeten Benutzers zu. Sie müssen nicht im Namen Ihrer Organisation zustimmen.
Rufen Sie die Objekt-ID des Clientdienstprinzipals ab, dem Sie delegierte Berechtigungen im Namen eines Benutzers erteilen. In diesem Artikel wird der Clientdienstprinzipal durch die ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94identifiziert. Erweitern Sie im Microsoft Entra Admin Center das Menü >Identität, erweitern Sie Anwendungen> und wählen Sie Unternehmensanwendungen>App-Anwendungen aus, um den Clientdienstprinzipal zu suchen. Wählen Sie ihn aus, und kopieren Sie auf der Seite Übersicht den Wert der Objekt-ID.
Achtung
Apps, denen die Berechtigung DelegatedPermissionGrant.ReadWrite.All gewährt wurde, sollte nur von geeigneten Benutzern aufgerufen werden.
Schritt 1: Abrufen der delegierten Berechtigungen des Ressourcendienstprinzipals
Bevor Sie delegierte Berechtigungen erteilen können, müssen Sie zunächst den Ressourcendienstprinzipal identifizieren, der die delegierten Berechtigungen verfügbar macht, die Sie gewähren möchten. Delegierte Berechtigungen werden im oauth2PermissionScopes-Objekt eines Dienstprinzipals definiert. In diesem Artikel verwenden Sie den Microsoft Graph-Dienstprinzipal in Ihrem Mandanten als Ressourcendienstprinzipal.
Anforderung
Die folgende Anforderung ruft die delegierten Berechtigungen ab, die vom Microsoft Graph-Dienstprinzipal im Mandanten definiert sind.
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq 'Microsoft Graph'&$select=id,displayName,appId,oauth2PermissionScopes
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "displayName eq 'Microsoft Graph'";
requestConfiguration.QueryParameters.Select = new string []{ "id","displayName","appId","oauth2PermissionScopes" };
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphserviceprincipals "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals"
//other-imports
)
requestFilter := "displayName eq 'Microsoft Graph'"
requestParameters := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
Select: [] string {"id","displayName","appId","oauth2PermissionScopes"},
}
configuration := &graphserviceprincipals.ServicePrincipalsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
servicePrincipals, err := graphClient.ServicePrincipals().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "displayName eq 'Microsoft Graph'";
requestConfiguration.queryParameters.select = new String []{"id", "displayName", "appId", "oauth2PermissionScopes"};
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.service_principals.service_principals_request_builder import ServicePrincipalsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetQueryParameters(
filter = "displayName eq 'Microsoft Graph'",
select = ["id","displayName","appId","oauth2PermissionScopes"],
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.service_principals.get(request_configuration = request_configuration)
Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals(id,displayName,appId,oauth2PermissionScopes)",
"value": [
{
"id": "7ea9e944-71ce-443d-811c-71e8047b557a",
"displayName": "Microsoft Graph",
"appId": "00000003-0000-0000-c000-000000000000",
"oauth2PermissionScopes": [
{
"adminConsentDescription": "Allows the app to read the full set of profile properties, reports, and managers of other users in your organization, on behalf of the signed-in user.",
"adminConsentDisplayName": "Read all users' full profiles",
"id": "a154be20-db9c-4678-8ab7-66f6cc099a59",
"isEnabled": true,
"type": "Admin",
"userConsentDescription": "Allows the app to read the full set of profile properties, reports, and managers of other users in your organization, on your behalf.",
"userConsentDisplayName": "Read all users' full profiles",
"value": "User.Read.All"
},
{
"adminConsentDescription": "Allows the app to list groups, and to read their properties and all group memberships on behalf of the signed-in user. Also allows the app to read calendar, conversations, files, and other group content for all groups the signed-in user can access. ",
"adminConsentDisplayName": "Read all groups",
"id": "5f8c59db-677d-491f-a6b8-5f174b11ec1d",
"isEnabled": true,
"type": "Admin",
"userConsentDescription": "Allows the app to list groups, and to read their properties and all group memberships on your behalf. Also allows the app to read calendar, conversations, files, and other group content for all groups you can access. ",
"userConsentDisplayName": "Read all groups",
"value": "Group.Read.All"
}
]
}
]
}
Schritt 2: Erteilen einer delegierten Berechtigung für den Clientdienstprinzipal im Namen eines Benutzers
Anforderung
In diesem Schritt erteilen Sie Ihrer App im Namen eines Benutzers eine delegierte Berechtigung, die von Microsoft Graph verfügbar gemacht wird, was zu einer delegierten Berechtigungserteilung führt.
Ab Schritt 1 lautet die Objekt-ID von Microsoft Graph im Mandanten. 7ea9e944-71ce-443d-811c-71e8047b557a
Die delegierten Berechtigungen User.Read.All und Group.Read.All werden durch die global eindeutigen IDs a154be20-db9c-4678-8ab7-66f6cc099a59 bzw 5f8c59db-677d-491f-a6b8-5f174b11ec1d . identifiziert.
Der Prinzipal ist ein Benutzer, der durch die ID 3fbd929d-8c56-4462-851e-0eb9a7b3a2a5identifiziert wird.
Der Clientdienstprinzipal wird durch die ID b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94identifiziert. Dies ist die Objekt-ID des Dienstprinzipals und nicht seine appId.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new OAuth2PermissionGrant
{
ClientId = "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94",
ConsentType = "Principal",
ResourceId = "7ea9e944-71ce-443d-811c-71e8047b557a",
PrincipalId = "3fbd929d-8c56-4462-851e-0eb9a7b3a2a5",
Scope = "User.Read.All Group.Read.All",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Oauth2PermissionGrants.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewOAuth2PermissionGrant()
clientId := "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94"
requestBody.SetClientId(&clientId)
consentType := "Principal"
requestBody.SetConsentType(&consentType)
resourceId := "7ea9e944-71ce-443d-811c-71e8047b557a"
requestBody.SetResourceId(&resourceId)
principalId := "3fbd929d-8c56-4462-851e-0eb9a7b3a2a5"
requestBody.SetPrincipalId(&principalId)
scope := "User.Read.All Group.Read.All"
requestBody.SetScope(&scope)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
oauth2PermissionGrants, err := graphClient.Oauth2PermissionGrants().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OAuth2PermissionGrant oAuth2PermissionGrant = new OAuth2PermissionGrant();
oAuth2PermissionGrant.setClientId("b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94");
oAuth2PermissionGrant.setConsentType("Principal");
oAuth2PermissionGrant.setResourceId("7ea9e944-71ce-443d-811c-71e8047b557a");
oAuth2PermissionGrant.setPrincipalId("3fbd929d-8c56-4462-851e-0eb9a7b3a2a5");
oAuth2PermissionGrant.setScope("User.Read.All Group.Read.All");
OAuth2PermissionGrant result = graphClient.oauth2PermissionGrants().post(oAuth2PermissionGrant);
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.o_auth2_permission_grant import OAuth2PermissionGrant
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OAuth2PermissionGrant(
client_id = "b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94",
consent_type = "Principal",
resource_id = "7ea9e944-71ce-443d-811c-71e8047b557a",
principal_id = "3fbd929d-8c56-4462-851e-0eb9a7b3a2a5",
scope = "User.Read.All Group.Read.All",
)
result = await graph_client.oauth2_permission_grants.post(request_body)
Während die vorherige Anforderung die Zustimmung im Namen eines einzelnen Benutzers erteilt, können Sie die Zustimmung im Namen aller Benutzer im Mandanten erteilen. Der Anforderungstext ähnelt dem vorherigen Anforderungstext, mit Ausnahme der folgenden Änderungen:
ConsentType ist AllPrincipals, was angibt, dass Sie im Namen aller Benutzer im Mandanten zustimmen.
Die principalId-Eigenschaft wird nicht angegeben oder kann sein null.
Ein Beispiel für den Anforderungstext zum Erteilen der Zustimmung im Namen aller Benutzer lautet wie folgt:
Wenn Sie die Zustimmung für alle Benutzer im Mandanten erteilt haben, wäre AllPrincipalsder consentType im Antwortobjekt , und die principalId wäre null.
Bestätigen der Berechtigungserteilung
Um die dem Dienstprinzipal im Namen des Benutzers zugewiesenen delegierten Berechtigungen zu überprüfen, führen Sie die folgende Anforderung aus.
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants?$filter=clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Oauth2PermissionGrants.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'";
});
mgc oauth2-permission-grants list --filter "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'"
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphoauth2permissiongrants "github.com/microsoftgraph/msgraph-sdk-go/oauth2permissiongrants"
//other-imports
)
requestFilter := "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'"
requestParameters := &graphoauth2permissiongrants.Oauth2PermissionGrantsRequestBuilderGetQueryParameters{
Filter: &requestFilter,
}
configuration := &graphoauth2permissiongrants.Oauth2PermissionGrantsRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
oauth2PermissionGrants, err := graphClient.Oauth2PermissionGrants().Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OAuth2PermissionGrantCollectionResponse result = graphClient.oauth2PermissionGrants().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.oauth2_permission_grants.oauth2_permission_grants_request_builder import Oauth2PermissionGrantsRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = Oauth2PermissionGrantsRequestBuilder.Oauth2PermissionGrantsRequestBuilderGetQueryParameters(
filter = "clientId eq 'b0d9b9e3-0ecf-4bfd-8dab-9273dd055a94' and principalId eq '3fbd929d-8c56-4462-851e-0eb9a7b3a2a5' and consentType eq 'Principal'",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.oauth2_permission_grants.get(request_configuration = request_configuration)
Schritt 3: Widerrufen delegierter Berechtigungen, die einem Dienstprinzipal im Namen eines Benutzers erteilt wurden [Optional]
Wenn einem Dienstprinzipal mehrere delegierte Berechtigungserteilungen im Namen eines Benutzers gewährt wurden, können Sie entweder bestimmte Oder alle Zuweisungen widerrufen. Verwenden Sie diese Methode, um die Zustimmung für die delegierten Berechtigungen zu entfernen und zu widerrufen, die Sie dem Clientdienstprinzipal zugewiesen haben.
Um eine oder einige Zuweisungen zu widerrufen, führen Sie eine PATCH-Anforderung für das oauth2PermissionGrant-Objekt aus, und geben Sie nur die delegierten Berechtigungen an, die im Scope-Parameter beibehalten werden sollen.
Um alle Berechtigungen aufzuheben, führen Sie eine DELETE-Anforderung für das oauth2PermissionGrant-Objekt aus.
Anforderung
Die folgende Anforderung widerruft alle Berechtigungserteilungen und behält nur die User.Read.All Berechtigungsgewährung bei. Die Berechtigungen werden entfernt, und die zuvor erteilte Zustimmung wird widerrufen.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new OAuth2PermissionGrant
{
Scope = "User.Read.All",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Oauth2PermissionGrants["{oAuth2PermissionGrant-id}"].PatchAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewOAuth2PermissionGrant()
scope := "User.Read.All"
requestBody.SetScope(&scope)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
oauth2PermissionGrants, err := graphClient.Oauth2PermissionGrants().ByOAuth2PermissionGrantId("oAuth2PermissionGrant-id").Patch(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OAuth2PermissionGrant oAuth2PermissionGrant = new OAuth2PermissionGrant();
oAuth2PermissionGrant.setScope("User.Read.All");
OAuth2PermissionGrant result = graphClient.oauth2PermissionGrants().byOAuth2PermissionGrantId("{oAuth2PermissionGrant-id}").patch(oAuth2PermissionGrant);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\OAuth2PermissionGrant;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new OAuth2PermissionGrant();
$requestBody->setScope('User.Read.All');
$result = $graphServiceClient->oauth2PermissionGrants()->byOAuth2PermissionGrantId('oAuth2PermissionGrant-id')->patch($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.o_auth2_permission_grant import OAuth2PermissionGrant
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OAuth2PermissionGrant(
scope = "User.Read.All",
)
result = await graph_client.oauth2_permission_grants.by_o_auth2_permission_grant_id('oAuth2PermissionGrant-id').patch(request_body)
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Oauth2PermissionGrants["{oAuth2PermissionGrant-id}"].DeleteAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.Oauth2PermissionGrants().ByOAuth2PermissionGrantId("oAuth2PermissionGrant-id").Delete(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
graphClient.oauth2PermissionGrants().byOAuth2PermissionGrantId("{oAuth2PermissionGrant-id}").delete();
<?php
use Microsoft\Graph\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$graphServiceClient->oauth2PermissionGrants()->byOAuth2PermissionGrantId('oAuth2PermissionGrant-id')->delete()->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.oauth2_permission_grants.by_o_auth2_permission_grant_id('oAuth2PermissionGrant-id').delete()
Sie haben einem Dienstprinzipal delegierte Berechtigungen (oder Bereiche) erteilt. Diese Methode zum Erteilen von Berechtigungen mithilfe von Microsoft Graph ist eine Alternative zur interaktiven Zustimmung und sollte mit Vorsicht verwendet werden.