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

O RSC (consentimento específico do recurso) é uma estrutura de autorização criada pelo Microsoft Teams e pela identidade da Microsoft que permite a concessão de acesso com escopo a um aplicativo.

Por meio do RSC, um usuário autorizado pode dar a um aplicativo acesso aos dados de uma instância específica de um tipo de recurso em vez de cada instância em todo o locatário. Por exemplo, uma pessoa que possui a equipe A e a equipe B pode decidir fornecer os dados do aplicativo Contoso apenas para a equipe A e não para a equipe B. O mesmo conceito de acesso a dados com escopo se aplica a chats e reuniões. Para obter mais informações, consulte RSC (consentimento específico do recurso).

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 manifesto de aplicativo versão 1.12 e posterior

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

Nome Tipo Descrição
id Cadeia de caracteres Sua ID do aplicativo Microsoft Entra. Para obter mais informações, confira registrar seu aplicativo no centro de administração 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 manifesto de aplicativo versão 1.11 e anterior

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

Nome Tipo Descrição
id String Sua ID do aplicativo Microsoft Entra. Para obter mais informações, confira registrar seu aplicativo no centro de administração 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 seu aplicativo. Para obter mais informações, consulte Permissões RSC com suporte.

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 o aplicativo tiver o objetivo de acessar APIs de chamada ou mídia, o deve ser a webApplicationInfo.Id ID do aplicativo Microsoft Entra de um Serviço de Bot do Azure.

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: A ID do aplicativo Microsoft Entra do aplicativo.

  • azureADAppSecret: sua senha do aplicativo Microsoft Entra.

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

  • teamGroupId: você pode obter a ID do grupo de equipe do cliente do Teams da seguinte maneira:

    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: A ID do aplicativo Microsoft Entra do aplicativo.

  • azureADAppSecret: sua senha do aplicativo 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 a ID do objeto Microsoft Entra do locatário.

  • chatId: você pode obter a ID do thread de chat do cliente Web do Teams da seguinte maneira:

    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 thread de chat da 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 status de resposta para confirmar que o comportamento das permissões RSC em seu aplicativo atende à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