Criar oAuth2PermissionGrant (uma concessão de permissão delegada)
Artigo
Namespace: microsoft.graph
Crie uma concessão de permissão delegada representada por um objeto oAuth2PermissionGrant .
Uma concessão de permissão delegada autoriza um principal de serviço de cliente (que representa uma aplicação cliente) a aceder a um principal de serviço de recurso (que representa uma API), em nome de um utilizador com sessão iniciada, para o nível de acesso limitado pelas permissões delegadas que foram concedidas.
Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.
Tipo de permissão
Permissões com menos privilégios
Permissões com privilégios superiores
Delegado (conta corporativa ou de estudante)
DelegatedPermissionGrant.ReadWrite.All
Directory.ReadWrite.All
Delegado (conta pessoal da Microsoft)
Sem suporte.
Sem suporte.
Application
DelegatedPermissionGrant.ReadWrite.All
Directory.ReadWrite.All
Importante
Em cenários delegados com contas escolares ou profissionais, o utilizador com sessão iniciada tem de ter uma função de Microsoft Entra suportada ou uma função personalizada com uma permissão de função suportada. As seguintes funções com menos privilégios são suportadas para esta operação:
No corpo do pedido, forneça uma representação JSON de um objeto oAuth2PermissionGrant .
Resposta
Se for bem-sucedido, este método devolve um código de resposta de série 200 e um novo objeto oAuth2PermissionGrant no corpo da resposta. A tabela seguinte lista as propriedades necessárias quando cria o oAuth2PermissionGrant.
Propriedade
Tipo
Descrição
clientId
Cadeia de caracteres
O ID de objeto (nãoappId) do principal de serviço de cliente da aplicação que está autorizado a agir em nome de um utilizador com sessão iniciada ao aceder a uma API. Obrigatório.
consentType
Cadeia de caracteres
Indica se é concedida autorização para a aplicação cliente representar todos os utilizadores ou apenas um utilizador específico.
AllPrincipals indica autorização para representar todos os utilizadores.
Principal indica autorização para representar um utilizador específico. O consentimento em nome de todos os utilizadores pode ser concedido por um administrador. Os utilizadores não administradores podem estar autorizados a consentir em nome de si próprios, em alguns casos, para algumas permissões delegadas. Obrigatório.
principalId
Cadeia de caracteres
O ID do utilizador em nome do qual o cliente está autorizado a aceder ao recurso, quando consentType é Principal. Se consentType for AllPrincipals , este valor é nulo. Necessário quando consentType é Principal.
resourceId
Cadeia de caracteres
O ID do principal do serviço de recursos ao qual o acesso está autorizado. Isto identifica a API à qual o cliente está autorizado a tentar chamar em nome de um utilizador com sessão iniciada.
scope
Cadeia de caracteres
Uma lista separada por espaços dos valores de afirmação para permissões delegadas que devem ser incluídas nos tokens de acesso da aplicação de recursos (a API). Por exemplo, openid User.Read GroupMember.Read.All. Cada valor de afirmação deve corresponder ao campo de valor de uma das permissões delegadas definidas pela API, listada na propriedade oauth2PermissionScopes do principal do serviço de recursos. Não pode exceder os 3850 carateres de comprimento.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new OAuth2PermissionGrant
{
ClientId = "ef969797-201d-4f6b-960c-e9ed5f31dab5",
ConsentType = "AllPrincipals",
ResourceId = "943603e4-e787-4fe9-93d1-e30f749aae39",
Scope = "DelegatedPermissionGrant.ReadWrite.All",
};
// To initialize your graphClient, see https://zcusa.951200.xyz/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 := "ef969797-201d-4f6b-960c-e9ed5f31dab5"
requestBody.SetClientId(&clientId)
consentType := "AllPrincipals"
requestBody.SetConsentType(&consentType)
resourceId := "943603e4-e787-4fe9-93d1-e30f749aae39"
requestBody.SetResourceId(&resourceId)
scope := "DelegatedPermissionGrant.ReadWrite.All"
requestBody.SetScope(&scope)
// To initialize your graphClient, see https://zcusa.951200.xyz/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("ef969797-201d-4f6b-960c-e9ed5f31dab5");
oAuth2PermissionGrant.setConsentType("AllPrincipals");
oAuth2PermissionGrant.setResourceId("943603e4-e787-4fe9-93d1-e30f749aae39");
oAuth2PermissionGrant.setScope("DelegatedPermissionGrant.ReadWrite.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://zcusa.951200.xyz/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OAuth2PermissionGrant(
client_id = "ef969797-201d-4f6b-960c-e9ed5f31dab5",
consent_type = "AllPrincipals",
resource_id = "943603e4-e787-4fe9-93d1-e30f749aae39",
scope = "DelegatedPermissionGrant.ReadWrite.All",
)
result = await graph_client.oauth2_permission_grants.post(request_body)