Probar permisos de consentimiento específicos del recurso en Teams

El consentimiento específico de recursos (RSC) es un marco de autorización creado por Microsoft Teams y la identidad de Microsoft que permite conceder acceso con ámbito a una aplicación.

A través de RSC, un usuario autorizado puede conceder a una aplicación acceso a los datos de una instancia específica de un tipo de recurso en lugar de a cada instancia de todo el inquilino. Por ejemplo, una persona propietaria del equipo A y del equipo B puede decidir proporcionar los datos de la aplicación Contoso solo al equipo A y no al equipo B. El mismo concepto de acceso a datos con ámbito se aplica a los chats y reuniones. Para obtener más información, consulte Consentimiento específico de recursos (RSC).

Requisitos previos

Asegúrese de comprobar los siguientes cambios en el manifiesto de la aplicación para el consentimiento específico del recurso antes de realizar las pruebas:


Permisos de RSC para la versión 1.12 y posteriores del manifiesto de aplicación

Agregue una clave webApplicationInfo al manifiesto de la aplicación con los siguientes valores:

Nombre Tipo Descripción
id Cadena Id. de aplicación de Microsoft Entra. Para obtener más información, consulte Registro de la aplicación en el Centro de administración de Microsoft Entra.
resource Cadena Este campo no tiene ninguna operación en RSC, pero debe agregarse y tener un valor para evitar una respuesta de error; cualquier cadena servirá.

Especifique los permisos necesarios para la aplicación.

Nombre Tipo Descripción
authorization Object Lista de permisos que la aplicación necesita para funcionar. Para obtener más información, vea autorización.

Ejemplo de RSC en un equipo

"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"
            }
        ]    
    }
}

Ejemplo de RSC en un 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"
            }
        ]    
    }
}

Nota:

Si la aplicación está pensada para admitir la instalación en ámbitos de equipo y chat, se pueden especificar permisos de equipo y chat en el mismo manifiesto en authorization.


Permisos de RSC para la versión 1.11 del manifiesto de aplicación y versiones anteriores

Agregue una clave webApplicationInfo al manifiesto de la aplicación con los siguientes valores:

Nombre Tipo Descripción
id Cadena Id. de aplicación de Microsoft Entra. Para obtener más información, consulte Registro de la aplicación en el Centro de administración de Microsoft Entra.
resource Cadena Este campo no tiene ninguna operación en RSC, pero debe agregarse y tener un valor para evitar una respuesta de error; cualquier cadena servirá.
applicationPermissions Matriz de cadenas Permisos de RSC para la aplicación. Para obtener más información, consulte Permisos de RSC admitidos.

Ejemplo de RSC en un equipo

"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"
    ]
  }

Ejemplo de RSC en un 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"
    ]
  }

Nota:

Si la aplicación está pensada para admitir la instalación en ámbitos de equipo y chat, se pueden especificar permisos de equipo y chat en el mismo manifiesto en applicationPermissions.

Importante

En el manifiesto de la aplicación, incluya solo los permisos de RSC que quiera que tenga la aplicación.

Nota:

Si la aplicación está pensada para acceder a las API de llamadas o medios, webApplicationInfo.Id debe ser el identificador de aplicación de Microsoft Entra de un servicio bot de Azure.

Prueba de los permisos de RSC agregados a un equipo mediante la aplicación Postman

Para comprobar si los permisos RSC son respetados por la carga útil de la solicitud de la API, debe copiar el código de prueba RSC JSON para el equipo en su entorno local y actualizar los siguientes valores:

  • azureADAppId: id. de aplicación de Microsoft Entra de la aplicación.

  • azureADAppSecret: la contraseña de la aplicación Microsoft Entra.

  • token_scope: El ámbito es necesario para obtener un token. Establezca el valor en https://graph.microsoft.com/.default.

  • teamGroupId: puede obtener el identificador de grupo de equipo del cliente de Teams de la siguiente manera:

    1. En el cliente de Teams, seleccione Teams en la barra de navegación izquierda.
    2. Seleccione el chat donde se instala la aplicación en el menú desplegable.
    3. Seleccione el icono Más opciones (⋯).
    4. Seleccione Obtener el vínculo para el equipo.
    5. Copie y guarde el valor groupId de la cadena.

Prueba de los permisos RSC agregados a un chat mediante la aplicación Postman

Para comprobar si la carga de solicitud de API respeta los permisos de RSC, debe copiar el código de prueba JSON RSC para chats en el entorno local y actualizar los valores siguientes:

  • azureADAppId: id. de aplicación de Microsoft Entra de la aplicación.

  • azureADAppSecret: la contraseña de la aplicación Microsoft Entra.

  • token_scope: El ámbito es necesario para obtener un token. Establezca el valor en https://graph.microsoft.com/.default.

  • tenantId: el nombre o el identificador de objeto de Microsoft Entra del inquilino.

  • chatId: puede obtener el identificador de subproceso de chat del cliente web de Teams de la siguiente manera:

    1. En el cliente web de Teams, seleccione Chat en la barra de navegación izquierda.
    2. Seleccione el chat donde se instala la aplicación en el menú desplegable.
    3. Copie la dirección URL web y guarde el identificador de subproceso de chat de la cadena. Identificador de subproceso de chat desde la dirección URL web.

Usar Postman

  1. Abra la aplicación Postman.
  2. Seleccione Archivo>Importar>Importar archivo para cargar el archivo JSON actualizado desde su entorno.
  3. Seleccione la pestaña Collections.
  4. Seleccione el botón de contenido adicional > junto a la Test RSC para expandir la vista de detalles y ver las solicitudes de API.

Ejecute toda la colección de permisos para cada llamada API. Los permisos especificados en el manifiesto de la aplicación deben ser correctos, mientras que los que no se especifiquen deben producir un error con un código de estado HTTP 403. Compruebe todos los códigos de estado de respuesta para confirmar que el comportamiento de los permisos de RSC en la aplicación cumple las expectativas.

Nota:

Para probar llamadas a DELETE y READ API específicas, agregue esos escenarios de instancia al archivo JSON.

Pruebe los permisos RSC revocados mediante Postman

  1. Desinstale la aplicación del recurso específico.
  2. Siga los pasos para chat o equipo:
    1. Test agregó permisos RSC a un equipo mediante Postman.
    2. Test agregó permisos RSC a un chat mediante Postman.
  3. Compruebe todos los códigos de estado de respuesta para confirmar que las llamadas API específicas se produjo un error con un código de estado HTTP 403.

Consulte también