Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O SharePoint e o OneDrive têm um modelo de permissões estabelecido há muito tempo que não se encaixa exatamente no modelo de escopos. Por exemplo, não existe um escopo global que fornece acesso ReadWrite a uma única lista em seu locatário. Em vez disso, os escopos selecionados dão suporte a esses cenários. Inicialmente, Sites.Selected existia para restringir o acesso de um aplicativo a um único conjunto de sites. Agora, listas, itens de lista, pastas e arquivos também têm suporte, e todos os escopos selecionados agora dão suporte aos modos delegado e de aplicativo.
Observação
Devido à evolução dos requisitos de nomenclatura de escopo, os escopos mais recentes são listados como uma tupla *.SelectedOperations.Selectedcompleta. Não há diferença funcional entre esse formato e o Sites.Selected formato.
Scopes
A tabela a seguir lista os escopos de permissão selecionados.
| Scopes | Descrição |
|---|---|
| Sites.Selecionados | Gerencia o acesso ao aplicativo no nível do conjunto de sites, fornecendo acesso a um conjunto de sites específico |
| Lists.SelectedOperations.Selected | Gerencia o acesso ao aplicativo no nível da lista, fornecendo acesso a uma lista específica |
| ListItems.SelectedOperations.Selected | Gerencia o acesso ao aplicativo no nível de arquivos, item de lista ou pasta, fornecendo acesso a um ou mais itens de lista |
| Files. SelectedOperations.Selected | Gerencia o acesso ao aplicativo no nível da pasta do arquivo ou da biblioteca, fornecendo acesso a um ou mais arquivos |
Como os escopos selecionados funcionam com permissões do SharePoint e do OneDrive
Quando um administrador consente com escopos selecionados para um aplicativo, ele delega o gerenciamento de permissões de recurso aos proprietários desse recurso dentro da carga de trabalho. Para outros escopos, como Files. Read.All, assim que o escopo for consentido, o aplicativo poderá acessar os recursos que ele representa. Os escopos selecionados exigem uma ação de atribuição explícita; um aplicativo consentido para Lists.SelectedOperations.Selected inicialmente não teria acesso.
Escopos selecionados exigem uma série de etapas para funcionar, o que fornece vários meios de controle para os administradores. O exemplo a seguir usa o Lists.SelectedOperations.Selected escopo, mas as etapas se aplicam a todos *. Escopos selecionados.
- O aplicativo deve ser consentido na ID de Entra para ter o escopo do aplicativo ou delegado
Lists.SelectedOperations.Selected. - O aplicativo deve receber permissões para uma lista por meio de uma chamada para
POST /sites/{siteid}/lists/{listid}/permissionscom uma função específica. - O aplicativo deve adquirir um token válido que contenha o
Lists.SelectedOperations.Selectedescopo para chamadas para a lista de permissões.
Se alguma das três etapas for perdida, o aplicativo não terá acesso. Administradores: dois pontos de controle:
- Remova as permissões em uma lista específica por meio de uma chamada para , o
DELETE /sites/{siteid}/lists/{listid}/permissions/{id}que remove o acesso à lista para esse aplicativo. - Revogue o
Lists.SelectedOperations.Selectedconsentimento do escopo no ID de Entra, o que impede o acesso do aplicativo a qualquer lista para a qual ele tenha recebido permissões anteriormente.
Com base nisso, você pode consentir um aplicativo com o Lists.SelectedOperations.Selected escopo no Entra ID, mas não conceder permissões a nenhuma lista - o que significa que o aplicativo não tem acesso. Da mesma forma, você pode chamar POST /sites/{siteid}/lists/{listid}/permissions qualquer aplicativo, mas sem os escopos adequados aparecendo no token, o aplicativo não tem acesso. Todas as três etapas devem ser concluídas para garantir o acesso esperado. Isso também se aplica ao outro *. Escopos selecionados e seus respectivos níveis.
Observação
A atribuição de permissões de aplicativo a listas, itens de lista, pastas ou arquivos interrompe a herança do recurso atribuído, portanto, lembre-se dos limites de serviço para permissões exclusivas no design da solução. As permissões no nível do conjunto de sites não interrompem a herança porque essa é a raiz da herança de permissão.
Um exemplo de definição de permissões é mostrado para sites; A lógica é semelhante para listas, itens de lista, arquivos ou pastas.
Qual é a diferença entre os escopos de arquivos e listItems?
No SharePoint, todos os arquivos são itens de lista, mas nem todos os itens de lista são arquivos. Como resultado, os aplicativos que carregam o ListItems.SelectedOperations.Selected escopo podem acessar e operar em todos os itens de lista e arquivos até sua função permitida. Aplicativos com Files.SelectedOperations.Selected só podem operar em arquivos (itens de lista) dentro de bibliotecas de documentos ou outras listas marcadas como contendo documentos. Isso imita o Files. Read.All e Files. ReadWrite.All que existe hoje, mas isolado em um único arquivo. Esse comportamento não muda com base no caminho do Microsoft Graph usado, como com /drives/{driveid}/items/{itemid} e /sites/{siteid}/lists/{listid}/items/{itemid}; em vez disso, o destino a ser acessado controla o comportamento.
Funções
A tabela a seguir lista as quatro funções que podem ser atribuídas a um aplicativo para um determinado recurso.
| Função | Descrição |
|---|---|
| leitura | Leia os metadados e o conteúdo do recurso. |
| gravação | Leia e modifique os metadados e o conteúdo do recurso. |
| owner | Representa a função de proprietário. |
| de controle total | Representa o controle total do recurso. |
Solicitação
POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Content-Type: application/json
{
"roles": ["write"],
"grantedToIdentities": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}]
}
Cabeçalhos de solicitação
| Nome | Descrição |
|---|---|
| Autorização | {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização. |
| Content-Type | application/json. Obrigatório. |
Resposta
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "1",
"@deprecated.GrantedToIdentities": "GrantedToIdentities has been deprecated. Refer to GrantedToIdentitiesV2",
"roles": ["write"],
"grantedToIdentities": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}],
"grantedToIdentitiesV2": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}]
}
Para obter exemplos que mostram como gerenciar permissões, consulte os tópicos da /permissions API para site, list, listItem e driveItem.
Quais permissões preciso para gerenciar permissões?
Os requisitos de permissão variam de acordo com o nível. Em todos os casos delegados, o usuário atual também precisa de permissões suficientes para gerenciar o acesso chamando a API. A tabela a seguir inclui escopos e escopos + funções atribuídas ao recurso pai. Por exemplo, se você tiver o escopo Sites.Selected E a função FullControl (Sites.Selected+FullControl), poderá gerenciar recursos nesse conjunto de sites.
| Recurso | Permissões de recurso necessárias | Observações |
|---|---|---|
| site | Sites.FullControl.All | Como você pode conceder permissões de controle total a um conjunto de sites usando Sites.Selected, esse requisito é necessariamente alto. |
| list | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner | |
| listItem | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner, Lists.SelectedOperations.Selected+FullControl, Lists.SelectedOperations.Selected+Owner | |
| file | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner, Lists.SelectedOperations.Selected+FullControl, Lists.SelectedOperations.Selected+Owner |
Como o acesso é calculado
Há dois tipos de tokens: somente aplicativo e delegado. Os cenários somente de aplicativo não têm usuário presente e são considerados de maior risco. Com delegado, o aplicativo nunca pode exceder as permissões existentes do usuário atual e pode ser considerado de menor risco para muitos cenários. Delegado é preferencial quando possível, mas ambos os modos estão disponíveis para atender às suas necessidades.
Uma tupla de ID do aplicativo, ID do recurso e função é armazenada. Como tal, o [aplicativo] tem acesso [função] ao [recurso]. Você especifica o aplicativo e a função quando uma permissão é criada por meio da API, e o caminho resolvido fornece o recurso. Por exemplo, o aplicativo Z tem acesso de leitura à lista em /sites/dev/lists/list1.
Para calcular o acesso, use os valores fornecidos no token para seguir aproximadamente este fluxo:
Examinar tipo de token (aplicativo ou delegado).
Localize o registro do aplicativo para a ID do aplicativo fornecido no recurso ou em um pai hierárquico protegível (herança).
Ocorre uma das seguintes situações:
- Para acesso ao aplicativo, se um registro for encontrado para o aplicativo e a função permitir a operação solicitada (ler um item, atualizar uma lista), o acesso será concedido.
- No cenário delegado, as permissões do aplicativo e do usuário são calculadas e, em seguida, cruzadas, o que significa que o aplicativo nunca pode exceder as permissões do usuário e o usuário nunca pode exceder (por meio do aplicativo) as permissões de aplicativo consentidas.
Anotações de comportamento de consentimento
As observações a seguir se aplicam ao comportamento de consentimento:
- Os aplicativos podem ter vários consentimentos selecionados e esses consentimentos podem ser aplicados em vários níveis no locatário.
- O acesso ao aplicativo é perdido assim que um escopo é revogado. Se um aplicativo tiver Listas.* e Sites.* e receber acesso a um conjunto de sites e a uma lista específica nesse conjunto de sites e, em seguida, o consentimento Sites.* for revogado, o aplicativo manterá o acesso à lista à qual recebeu acesso específico por meio do consentimento Listas.* e a chamada anterior para
list/permissions. - Se um aplicativo tiver permissões para uma lista por meio de uma chamada para
list/permissions, e o acesso for removido por meio de uma chamada paraDELETE lists/permissions/id, ele perderá o acesso a essa lista e a todos os itens dessa lista, independentemente de quaisquer permissões explícitas definidas nesses itens da lista. Posteriormente, você poderá conceder novamente permissões de itens específicos, se necessário. - Escopos de nível superior, como Sites.*, podem ser usados para conceder permissões específicas de arquivos, mas escopos mais baixos nunca podem fornecer acesso a recursos de nível superior. Isso permite que os aplicativos tenham acesso em um nível específico.
- O consentimento é um conceito externo, consumido pelo OneDrive e pelo SharePoint por meio do token fornecido, e todos os escopos apresentados no token são respeitados.