Compartilhar via


Testar permissões de consentimento específicas do recurso no Teams

O consentimento específico do recurso (RSC) é uma arquitetura de autorização criada pelo Microsoft Teams e identidade da Microsoft que permite conceder acesso limitado a uma aplicação.

Através do RSC, um utilizador autorizado pode conceder a uma aplicação acesso aos dados de uma instância específica de um tipo de recurso em vez de todas as instâncias em todo o inquilino. Por exemplo, uma pessoa proprietária da equipa A e da equipa B pode decidir atribuir os dados da aplicação Contoso apenas à equipa A e não à equipa B. O mesmo conceito de acesso a dados no âmbito aplica-se a conversas e reuniões. Para obter mais informações, veja Consentimento específico do recurso (RSC).

Pré-requisitos

Verifique se as seguintes alterações de manifesto do aplicativo para consentimento específico do recurso antes de testar:


Permissões RSC para a versão 1.12 e posterior do manifesto da aplicação

Adicione uma chave webApplicationInfo ao manifesto do aplicativo com os seguintes valores:

Nome Tipo Descrição
id Cadeia de caracteres O seu ID da aplicação Microsoft Entra. Para obter mais informações, consulte Registar a sua aplicação no centro de administração do Microsoft Entra.
resource Cadeia de caracteres Este campo não tem nenhuma operação na RSC, mas deve ser adicionado e ter um valor para evitar uma resposta de erro; qualquer cadeia de caracteres fará isso.

Especifique as permissões necessárias para o aplicativo.

Nome Tipo Descrição
authorization Objeto Lista de permissões que o aplicativo precisa para funcionar. Para obter mais informações, consulte autorização.

Exemplo de RSC em uma equipe

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp"
    },
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "TeamSettings.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamSettings.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "ChannelSettings.Read.Group",
                "type": "Application"
            },
            {
                "name": "ChannelSettings.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "Channel.Create.Group",
                "type": "Application"
            },
            {
                "name": "Channel.Delete.Group",
                "type": "Application"
            },
            {
                "name": "ChannelMessage.Read.Group",
                "type": "Application"
            },
            {
                "name": "ChannelMeeting.ReadBasic.Group",
                "type": "Application"
            },
            {
                "name": "TeamsAppInstallation.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Create.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Delete.Group",
                "type": "Application"
            },
            {
                "name": "TeamMember.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsActivity.Send.Group",
                "type": "Application"
            }
        ]    
    }
}

Exemplo de RSC em um chat

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp"
    },
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "ChatSettings.Read.Chat",
                "type": "Application"
            },
            {
                "name": "ChatSettings.ReadWrite.Chat",
                "type": "Application"
            },
            {
                "name": "ChatMessage.Read.Chat",
                "type": "Application"
            },
            {
                "name": "ChatMember.Read.Chat",
                "type": "Application"
            },
            {
                "name": "Chat.Manage.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Read.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Create.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Delete.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.ReadWrite.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsAppInstallation.Read.Chat",
                "type": "Application"
            },
            {
                "name": "OnlineMeeting.ReadBasic.Chat",
                "type": "Application"
            },
            {
                "name": "Calls.AccessMedia.Chat",
                "type": "Application"
            },
            {
                "name": "Calls.JoinGroupCalls.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsActivity.Send.Chat",
                "type": "Application"
            }
        ]    
    }
}

Observação

Se o aplicativo tiver o objetivo de dar suporte à instalação nos escopos de equipe e chat, as permissões de equipe e chat poderão ser especificadas no mesmo manifesto em authorization


Permissões RSC para a versão 1.11 e anterior do manifesto da aplicação

Adicione uma chave webApplicationInfo ao manifesto do aplicativo com os seguintes valores:

Nome Tipo Descrição
id Cadeia de caracteres O seu ID da aplicação Microsoft Entra. Para obter mais informações, consulte Registar a sua aplicação no centro de administração do Microsoft Entra.
resource Cadeia de caracteres Este campo não tem nenhuma operação na RSC, mas deve ser adicionado e ter um valor para evitar uma resposta de erro; qualquer cadeia de caracteres fará isso.
applicationPermissions Matriz de cadeias de caracteres Permissões RSC para a sua aplicação. Para obter mais informações, veja Permissões de RSC suportadas.

Exemplo de RSC em uma equipe

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp",
    "applicationPermissions": [
        "TeamSettings.Read.Group",
        "TeamSettings.ReadWrite.Group",
        "ChannelSettings.Read.Group",
        "ChannelSettings.ReadWrite.Group",
        "Channel.Create.Group",
        "Channel.Delete.Group",
        "ChannelMessage.Read.Group",
        "ChannelMeeting.ReadBasic.Group",
        "TeamsAppInstallation.Read.Group",
        "TeamsTab.Read.Group",
        "TeamsTab.Create.Group",
        "TeamsTab.ReadWrite.Group",
        "TeamsTab.Delete.Group",
        "TeamMember.Read.Group",
        "TeamsActivity.Send.Group"
    ]
  }

Exemplo de RSC em um chat

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp",
    "applicationPermissions": [
        "ChatSettings.Read.Chat",
        "ChatSettings.ReadWrite.Chat",
        "ChatMessage.Read.Chat",
        "ChatMember.Read.Chat",
        "Chat.Manage.Chat",
        "TeamsTab.Read.Chat",
        "TeamsTab.Create.Chat",
        "TeamsTab.Delete.Chat",
        "TeamsTab.ReadWrite.Chat",
        "TeamsAppInstallation.Read.Chat",
        "OnlineMeeting.ReadBasic.Chat",
        "Calls.AccessMedia.Chat",
        "Calls.JoinGroupCalls.Chat",
        "TeamsActivity.Send.Chat"
    ]
  }

Observação

Se o aplicativo tiver o objetivo de dar suporte à instalação nos escopos de equipe e chat, as permissões de equipe e chat poderão ser especificadas no mesmo manifesto em applicationPermissions

Importante

No manifesto do aplicativo, inclua apenas as permissões RSC que você deseja que seu aplicativo tenha.

Observação

Se a aplicação se destinar a aceder a APIs de chamadas ou multimédia, deve webApplicationInfo.Id ser o ID da aplicação Microsoft Entra de um Azure Bot Service.

O teste adicionou permissões de RSC a uma equipe usando o aplicativo Postman

Para verificar se as permissões RSC estão sendo respeitadas pelo conteúdo da solicitação de API, você precisa copiar o código do teste JSON do RSC para a equipe em seu ambiente local e atualizar os seguintes valores:

  • azureADAppId: O ID da aplicação Microsoft Entra da sua aplicação.

  • azureADAppSecret: a palavra-passe da aplicação Microsoft Entra.

  • token_scope: o escopo é necessário para obter um token. Defina o valor como https://graph.microsoft.com/.default.

  • teamGroupId: pode obter o ID do grupo de equipa a partir do cliente do Teams da seguinte forma:

    1. No cliente do Teams, selecione Teams na barra de navegação à esquerda.
    2. Selecione o chat em que o aplicativo está instalado no menu suspenso.
    3. Selecione o ícone Mais opções (⋯).
    4. SelecioneObter um link para a equipe.
    5. Copie e salve o valor groupId da cadeia de caracteres.

O teste adicionou permissões RSC a um chat usando o aplicativo Postman

Para verificar se as permissões RSC estão sendo respeitadas pelo conteúdo da solicitação de API, você precisa copiar o código de teste JSON do RSC para chats para seu ambiente local e atualizar os seguintes valores:

  • azureADAppId: O ID da aplicação Microsoft Entra da sua aplicação.

  • azureADAppSecret: a palavra-passe da aplicação Microsoft Entra.

  • token_scope: o escopo é necessário para obter um token. Defina o valor como https://graph.microsoft.com/.default.

  • tenantId: o nome ou o ID de Objeto do Microsoft Entra do seu inquilino.

  • chatId: pode obter o ID do tópico de chat a partir do cliente Web do Teams da seguinte forma:

    1. No cliente do Teams, selecione Chat na barra de navegação à esquerda.
    2. Selecione o chat em que o aplicativo está instalado no menu suspenso.
    3. Copie o URL da web e salve o ID do tópico de chat da string. ID do tópico de chat do URL da Web.

Usar o Postman

  1. Abra o aplicativo Postman.
  2. Selecione Arquivo>Importar>Importar arquivo para carregar o arquivo JSON atualizado do seu ambiente.
  3. Escolha a guia Conjuntos.
  4. Selecione a divisa > ao lado do Testar RSC para expandir a exibição de detalhes e ver as solicitações de API.

Execute toda a coleção de permissões para cada chamada à API. As permissões especificadas no manifesto do aplicativo devem ser bem-sucedidas, enquanto as não especificadas devem falhar com um código de status HTTP 403. Verifique todos os códigos de estado de resposta para confirmar que o comportamento das permissões RSC na sua aplicação corresponde às expectativas.

Observação

Para testar chamadas específicas à API DELETE e READ, adicione esses cenários de instância ao arquivo JSON.

Testar permissões RSC revogadas usando o Postman

  1. Desinstale o aplicativo do recurso específico.
  2. Siga as etapas para chat ou equipe:
    1. O teste adicionou permissões RSC a uma equipe usando o Postman.
    2. O teste adicionou permissões RSC a um chat usando o Postman.
  3. Verifique todos os códigos de status de resposta para confirmar se as chamadas à API específicas falharam com um código de status HTTP 403.

Confira também