Compartir a través de


Actualización de los permisos solicitados de una aplicación en Microsoft Entra ID

Al configurar una aplicación con Microsoft Entra ID, los desarrolladores pueden solicitar acceso a los datos de otras aplicaciones y servicios mediante permisos. Pueden solicitar permisos agregando permisos estáticos al manifiesto de la aplicación o solicitando permisos dinámicamente en tiempo de ejecución. Los usuarios o administradores pueden optar por conceder permisos durante el consentimiento, lo que permite a la aplicación acceder a los datos que necesita.

A medida que evoluciona la funcionalidad de una aplicación, los recursos a los que requiere acceso también cambian. Estos cambios podrían implicar habilitar nuevas características, eliminar el acceso innecesario o reemplazar permisos con privilegios elevados por menos privilegios. En este artículo se explica cómo actualizar los permisos que solicita la aplicación mediante el Centro de administración de Microsoft Entra y las llamadas API de Microsoft Graph.

La actualización de permisos para la aplicación no es solo un procedimiento recomendado de seguridad, sino también una manera de mejorar la experiencia y la adopción del usuario de la aplicación. En la sección siguiente se describen algunas de las ventajas de actualizar permisos para la aplicación:

  • Si la aplicación tiene una nueva funcionalidad, puede solicitar más permisos que permitan a la aplicación acceder a los recursos adicionales que necesita.
  • Es más probable que los clientes adopten la aplicación si solicita solo los permisos con privilegios mínimos necesarios para funcionar. Muestra que la aplicación respeta la privacidad y la protección de datos del cliente y no accede a más recursos de los que necesita.
  • Además, si la aplicación está en peligro, hay un radio de explosión más pequeño si tiene menos permisos con privilegios. Esto significa que el atacante tiene menos acceso a los datos y recursos del cliente y, por tanto, se reducen los posibles daños.
  • Al actualizar los permisos de la aplicación, puede mejorar la seguridad, la facilidad de uso y el cumplimiento de la aplicación y generar confianza con sus clientes.

Requisitos previos

Para actualizar los permisos solicitados de una aplicación, necesita:

  • Una cuenta de usuario de Microsoft Entra. Si no tiene ninguna cuenta, cree una gratuita.
  • Uno de los siguientes roles: Administrador de aplicaciones o Administrador de aplicaciones en la nube. Un propietario de la aplicación que no es un administrador puede actualizar los permisos solicitados de una aplicación.

Escenarios para actualizar permisos

En la sección siguiente se enumeran los tres escenarios principales en los que necesita actualizar los permisos que solicita la aplicación:

  • Agregar permisos de API a una aplicación
  • Quitar permisos sin usar de una aplicación
  • Reemplazar un permiso

Nota:

La actualización de los permisos solicitados para la aplicación no concede o revoca automáticamente acceso de la aplicación a los recursos protegidos. Los clientes o los administradores de su organización tienen que conceder consentimiento a los nuevos permisos agregados o revocar manualmente los propios permisos.

Agregar permisos de API a una aplicación

Puedes agregar un permiso si la aplicación tiene una nueva funcionalidad que necesita un permiso que no necesitaba antes.

Se recomienda solicitar acceso solo a los permisos mínimos que la aplicación necesita para funcionar. Si necesita agregar un nuevo permiso para admitir nuevas funcionalidades en la aplicación, solicite solo el permiso con menos privilegios para esa característica. Por ejemplo, para agregar una característica de notificación por correo electrónico a la aplicación, debe acceder a los correos electrónicos del usuario. Para ello, tendría que solicitar acceso para el permiso Mail.ReadWrite.

El consentimiento estático es una manera de solicitar permisos de los usuarios o administradores en el momento del registro de una aplicación, en lugar de en tiempo de ejecución. El consentimiento estático requiere que la aplicación declare todos los permisos que necesita en el panel Registros de aplicaciones del Centro de administración de Microsoft Entra. Con el Centro de administración de Microsoft Entra, solo puede actualizar los permisos para el consentimiento estático. Para obtener más información sobre los distintos tipos de consentimiento, consulte Tipos de consentimiento. Para obtener información sobre cómo actualizar permisos para el consentimiento dinámico, consulte la pestaña Microsoft Graph de este artículo.

En esta sección aprenderá a agregar permisos al consentimiento estático.

Puede agregar permisos al consentimiento estático de dos maneras diferentes en el Centro de administración de Microsoft Entra:

Opción 1: Agregar permisos en el panel de permisos de API

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de aplicaciones en la nube o propietario de la aplicación.
  2. Vaya aIdentidad>Aplicaciones>Registros de aplicaciones>Todas las aplicaciones.
  3. Busque el registro de aplicaciones al que desea agregar permisos y selecciónelo. Puede agregar permisos de dos maneras diferentes:
  4. Agregar permisos en el panel de permisos de API.
    1. Localice el panel de Permisos de API y seleccione Agregar un permiso.

    2. Seleccione la API a la que desea acceder y el permiso que desea solicitar en la lista de opciones disponibles y seleccione Agregar permisos.

      Captura de pantalla del panel permisos de API.

Opción 2: Agregar permisos al manifiesto de aplicación

  1. En el panel de navegación izquierdo, en el grupo de menús Administrar, seleccione Manifiesto. La selección abre un editor que le permite editar directamente los atributos del objeto de registro de la aplicación.
  2. Edite cuidadosamente la propiedad requiredResourceAccess en el archivo de manifiesto de la aplicación.
  3. Agregue la propiedad resourceAppId y resourceAccess y asigne los permisos necesarios.
  4. Guarde los cambios.

Para completar los pasos siguientes para agregar permisos, necesita los siguientes recursos y privilegios:

  • Ejecute las solicitudes HTTP en una herramienta de su elección, por ejemplo, en su aplicación, o a través de Graph Explorer.
  • Ejecute las API como usuario con al menos un Administrador de aplicaciones en la nube o como propietario del registro de la aplicación de destino.
  • A la aplicación que se usa para realizar estos cambios debe habérselo concedido el permiso Application.ReadWrite.All.
  1. Identifique los permisos que requiere la aplicación, sus identificadores de permiso y si son roles de aplicación (permisos de aplicación) o permisos delegados. Por ejemplo, si desea solicitar permisos de Microsoft Graph, consulte permisos de Microsoft Graph para obtener una lista de permisos y sus identificadores.

  2. Agregue los permisos necesarios de Microsoft Graph a la aplicación. En el ejemplo siguiente se llama a la API de Actualización de la aplicación para agregar los permisos necesarios de Microsoft Graph a un registro de aplicación identificado por el identificador de objeto aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. En este ejemplo se usa el permiso delegado Analytics.Read y Application.Read.All y el permiso de aplicación. Microsoft Graph se identifica como un objeto ServicePrincipal con 00000003-0000-0000-c000-000000000000 como su único AppId global.

    PATCH https://graph.microsoft.com/v1.0/applications/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    Content-Type: application/json
     {
         "requiredResourceAccess": [
             {
                 "resourceAppId": "00000003-0000-0000-c000-000000000000",
                 "resourceAccess": [
                     {
                         "id": "e03cf23f-8056-446a-8994-7d93dfc8b50e",
                         "type": "Scope"
                     },
                     {
                         "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30",
                         "type": "Role"
                     }
                 ]
             }
         ]
     }
    

El consentimiento dinámico es una manera de solicitar permisos de los usuarios o administradores en el tiempo de ejecución en lugar de en declararlos estadísticamente en el panel Registros de aplicaciones. El consentimiento dinámico permite a la aplicación solicitar solo los permisos que necesita para una funcionalidad específica y obtener el consentimiento del usuario o administrador cuando sea necesario. El consentimiento dinámico se puede usar con permisos delegados y se puede combinar con el ámbito de /.default para solicitar el consentimiento del administrador para todos los permisos.

Para agregar permisos al consentimiento dinámico:

  • Usar Microsoft Graph: agregue los permisos necesarios de Microsoft Graph a un registro de aplicación. En este ejemplo se usa el permiso delegado Analytics.Read y Application.Read.All y el permiso de aplicación. Reemplace los valores de "ámbitos" por los valores de los permisos delegados de Microsoft Graph que quiera configurar para la aplicación.

    La solicitud debería ser similar al ejemplo siguiente:

    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=Analytics.Read+Application.Read

  • Usar MSAL.js: Reemplace los valores de "ámbitos" por los valores de los permisos delegados de Microsoft Graph que quiera configurar para la aplicación.

      const Request = {
          scopes: ["openid", "profile"],
          loginHint: "example@domain.net"
      };
    
      myMSALObj.ssoSilent(Request)
          .then((response) => {
              // your logic
          }).catch(error => {
              console.error("Silent Error: " + error);
              if (error instanceof msal.InteractionRequiredAuthError) {
                  myMSALObj.loginRedirect(loginRequest);
              }
      });
    

Una vez agregados los permisos a la aplicación, los usuarios o administradores deben conceder consentimiento a los nuevos permisos. Los usuarios que no son administradores ven una solicitud de consentimiento cuando inician sesión en la aplicación. Por otro lado, los usuarios administradores pueden conceder consentimiento a los nuevos permisos en nombre de todos los usuarios de su organización cuando inician sesión por primera vez en la aplicación o en el Centro de administración de Microsoft Entra.

Cuando los permisos agregados requieren consentimiento del administrador, las acciones necesarias varían en función del tipo de aplicación:

  • Aplicación de inquilino único y aplicación multiinquilino en el inquilino principal: el usuario debe iniciar sesión con al menos un rol de administrador global con privilegios y conceder el consentimiento para todo el inquilino.
  • Aplicaciones multiinquilino en los inquilinos del cliente: el usuario ve nuevas solicitudes de consentimiento en su siguiente intento de inicio de sesión. Si los permisos solo requieren consentimiento del usuario, el usuario puede conceder consentimiento. Si los permisos requieren consentimiento del administrador, el usuario debe ponerse en contacto con su administrador para conceder el consentimiento.

Detener la solicitud de permisos sin usar

La eliminación de permisos puede reducir el riesgo de exponer datos confidenciales o poner en peligro la seguridad y simplificar el proceso de consentimiento para los usuarios o administradores. Si la aplicación ya no necesita un permiso, debe impedir que la aplicación la solicite quitando el permiso del registro de la aplicación el acceso a recursos y el código necesarios. Por ejemplo, una aplicación que ya no envía notificaciones por correo electrónico puede quitar el permiso Mail.ReadWrite.

Importante

Quitar un permiso del registro de la aplicación no revoca automáticamente los permisos ya concedidos a la aplicación. Debe revocar los permisos manualmente. Para obtener más información, consulte la sección Revocar consentimiento para los permisos eliminados de la aplicación empresarial de este artículo.

Para dejar de solicitar permisos que requieran consentimiento estático, debe quitar el permiso del panel Registros de aplicaciones. Un administrador del inquilino también debe revocar el permiso en el panel Aplicaciones empresariales. Para obtener más información sobre cómo revocar permisos concedidos a una aplicación empresarial, consulte Revocar permisos para una aplicación empresarial.

En esta sección aprenderá a detener la solicitud de permisos para el consentimiento estático.

Puede quitar permisos del consentimiento estático de dos maneras diferentes en el Centro de administración de Microsoft Entra:

Opción 1: en el panel Permisos de API

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de aplicaciones en la nube o propietario de la aplicación.
  2. Vaya aIdentidad>Aplicaciones>Registros de aplicaciones>Todas las aplicaciones.
  3. Busque el registro de aplicaciones del que desea quitar permisos y selecciónelo.
  4. Quitar permisos del panel de permisos de API:
    1. Busque el panel permisos de API y busque los permisos que desea quitar.

    2. Seleccione la API que desea quitar y seleccione Revocar consentimiento del administrador primero y quitar permiso después. Garantiza que el permiso concedido se quite del inquilino.

      Captura de pantalla que muestra cómo quitar permisos a través del panel Permisos de API.

Opción 2: desde el manifiesto de aplicación

  1. En el panel de navegación izquierdo, en el grupo de menús Administrar, seleccione Manifiesto. Un editor se abre y permite editar directamente los atributos del objeto de registro de la aplicación.
  2. Edite cuidadosamente la propiedad requiredResourceAccess en el archivo de manifiesto de la aplicación.
  3. Quite los permisos innecesarios de la propiedad resourceAppId y resourceAccess.
  4. Guarde los cambios.

Para completar los pasos siguientes para quitar permisos, necesita los siguientes recursos y privilegios:

  • Ejecute las solicitudes HTTP en una herramienta de su elección, por ejemplo, en su aplicación, o a través de Graph Explorer.
  • Llame a las API con al menos un Administrador de aplicaciones en la nube o como propietario del registro de la aplicación de destino.
  • A la aplicación que se usa para realizar estos cambios debe habérselo concedido el permiso Application.ReadWrite.All.
  1. Identifique los permisos para su aplicación.

  2. Por ejemplo, para impedir que la aplicación solicite permisos de Microsoft Graph, identifique los permisos de Microsoft Graph para la aplicación, sus identificadores de permiso y si son roles de aplicación (permisos de aplicación) o permisos delegados.

  3. Quite los permisos no deseados de Microsoft Graph de la aplicación. En el ejemplo siguiente se llama a la API Actualizar aplicación para quitar los permisos no deseados de Microsoft Graph de un registro de aplicación identificado por un identificador de cliente de ejemplo00001111-aaaa-2222-bbbb-3333cccc4444. En este ejemplo, la aplicación tiene Analytics.Read, User.Read, y Application.Read.All. Tenemos que quitar el permiso delegado Analytics.Read y Application.Read.All y el permiso de aplicación. Microsoft Graph se identifica como un objeto ServicePrincipal con 00000003-0000-0000-c000-000000000000 como su único AppId global y Microsoft Graph como su DisplayName y AppDisplayName.

    PATCH https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
    Content-Type: application/json
    {
        "requiredResourceAccess": [
            {
                "resourceAppId": "00000003-0000-0000-c000-000000000000",
                "resourceAccess": [
                    {
                        "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6 ",
                        "type": "Scope"
                    }
                ]
            }
        ]
    }
    

Cuando necesite quitar los permisos delegados de la solicitud de consentimiento dinámico, especifique el parámetro de ámbito mientras deja los permisos que desea quitar. Quitar los permisos garantiza que la aplicación no llame a la API correspondiente.

Este método solo funciona para permisos delegados. Los permisos de aplicación se solicitan y conceden a un administrador mediante el consentimiento estático y no se incluyen en el parámetro de ámbito durante la solicitud de autorización de OAuth 2.0.

Para detener la solicitud de permisos con el consentimiento dinámico:

  • Uso de Microsoft Graph: quite los permisos delegados no deseados de Microsoft Graph del parámetro "ámbitos". En este ejemplo, la aplicación solicita tres permisos: Analytics.Read, User.Read y Application.Read. El permiso delegado Analytics.Read y el permiso de aplicación Application.Read ya no son necesarios para esta aplicación. Solo requiere User.Read.

La solicitud debe ser similar a la del siguiente ejemplo:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=User.Read

  • usando MSAL.js: quite los permisos delegados no deseados de Microsoft Graph en "ámbitos".

        const Request = {
            scopes: ["openid", "profile"],
            loginHint: "example@domain.net"
        };
    
        myMSALObj.ssoSilent(Request)
            .then((response) => {
                // your logic
            }).catch(error => {
                console.error("Silent Error: " + error);
                if (error instanceof msal.InteractionRequiredAuthError) {
                    myMSALObj.loginRedirect(loginRequest);
                }
        });
    

Después de quitar los permisos del registro de la aplicación, un administrador del inquilino también debe revocar el consentimiento para proteger los datos de la organización. Cuando el permisos quitado requiere consentimiento del administrador, las acciones necesarias varían en función del tipo de aplicación:

  • Aplicación de inquilino único y aplicación multiinquilino en el inquilino principal: para una aplicación de inquilino único, póngase en contacto con el administrador del inquilino para revocar los permisos ya concedidos a la aplicación. Para una aplicación multiinquilino, póngase en contacto con los administradores de todos los inquilinos donde residen las instancias de la aplicación para revocar los permisos concedidos a la aplicación empresarial. Revocar el consentimiento a los permisos eliminados garantiza que la aplicación no mantiene el acceso a través del permiso quitado.
  • Aplicaciones multiinquilino en los inquilinos de los clientes: asegúrese de que se comunica con los clientes para revocar permisos a través de anuncios, blogs y cualquier otro canal de comunicación.

En el caso de las aplicaciones de inquilino único y multiinquilino, los usuarios que no son administradores en los inquilinos en los que el consentimiento del usuario está habilitado pueden usar el portal MyApps para revocar el consentimiento a los permisos concedidos anteriormente. Para obtener más información sobre cómo los usuarios finales pueden revocar permisos en el portal de MyApps, consulte Revocar el consentimiento del usuario final.

Reemplazar un permiso

Debe reemplazar un permiso con privilegios elevados cuando basta con un permiso con menos privilegios.

Reemplazar permisos también puede reducir el riesgo de exponer datos confidenciales o poner en peligro la seguridad y, por tanto, mejorar la experiencia y la confianza del usuario. Si la aplicación usa un permiso con privilegios elevados, como Directory.ReadWrite.All, debe tener en cuenta si un permiso con menos privilegios, como User.ReadWrite.All, sería suficiente para la funcionalidad de la aplicación.

Nota:

Al modificar los permisos solicitados de una aplicación para el consentimiento estático, el cliente tendrá que volver a dar su consentimiento. El acto de volver a dar su consentimiento revoca todos los permisos concedidos previamente y concede consentimiento a los nuevos. Al modificar los permisos solicitados de una aplicación para el consentimiento dinámico, los permisos concedidos anteriormente no se revocarán. El cliente debe revocar los permisos manualmente.

Para reemplazar un permiso, debe quitar el permiso innecesario y agregar el alternativo. Los pasos son como los descritos en las secciones Detener la solicitud de permisos sin usar y agregar permisos de este artículo.