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 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:
- Incorporación de permisos de API a una aplicación
- Eliminación de permisos sin usar de una aplicación
- Sustitución de 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.
Incorporación de permisos de API a una aplicación
Puede 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
.
Incorporación de permisos al consentimiento estático
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 Microsoft Entra. Con el Centro de administración Microsoft Entra, solo puede actualizar los permisos para el consentimiento estático. Para obtener más información sobre los distintos tipos de consentimiento, vea 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
- Inicie sesión en el Centro de administración Microsoft Entra al menos como Administrador de aplicaciones en la nube o propietario de la aplicación.
- Vaya aIdentidad>Aplicaciones>Registros de aplicaciones>Todas las aplicaciones.
- Busque el registro de aplicaciones al que desea agregar permisos y selecciónelo. Puede agregar permisos de dos maneras diferentes:
- Agregar permisos en el panel de permisos de API.
Opción 2: Agregar permisos al manifiesto de aplicación
- 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.
- Edite cuidadosamente la propiedad
requiredResourceAccess
en el archivo de manifiesto de la aplicación. - Agregue la propiedad
resourceAppId
yresourceAccess
y asigne los permisos necesarios. - 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
.
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 quiere solicitar permisos de Microsoft Graph, vea permisos de Microsoft Graph para obtener una lista de permisos y sus identificadores.
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 delegadoAnalytics.Read
yApplication.Read.All
y el permiso de aplicación. Microsoft Graph se identifica como un objeto ServicePrincipal con00000003-0000-0000-c000-000000000000
como su únicoAppId
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" } ] } ] }
Incorporación de permisos al consentimiento dinámico
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:
Uso de 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
yApplication.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
Uso de 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); } });
Concesión de consentimiento para los permisos agregados para la aplicación empresarial
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 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.
Detención de 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, vea la sección Revocar consentimiento para los permisos eliminados de la aplicación empresarial de este artículo.
Detener la solicitud de permisos para el consentimiento estático
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, vea 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 Microsoft Entra:
Opción 1: en el panel Permisos de API
- Inicie sesión en el Centro de administración Microsoft Entra al menos como Administrador de aplicaciones en la nube o propietario de la aplicación.
- Vaya aIdentidad>Aplicaciones>Registros de aplicaciones>Todas las aplicaciones.
- Busque el registro de aplicaciones del que desea quitar permisos y selecciónelo.
- Quitar permisos del panel de permisos de API:
Opción 2: desde el manifiesto de aplicación
- 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.
- Edite cuidadosamente la propiedad
requiredResourceAccess
en el archivo de manifiesto de la aplicación. - Quite los permisos innecesarios de la propiedad
resourceAppId
yresourceAccess
. - 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
.
Identifique los permisos para su aplicación.
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.
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 ejemplo
00001111-aaaa-2222-bbbb-3333cccc4444
. En este ejemplo, la aplicación tieneAnalytics.Read
,User.Read
yApplication.Read.All
. Tenemos que quitar el permiso delegadoAnalytics.Read
yApplication.Read.All
y el permiso de aplicación. Microsoft Graph se identifica como un objeto ServicePrincipal con00000003-0000-0000-c000-000000000000
como su únicoAppId
global y Microsoft Graph como suDisplayName
yAppDisplayName
.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" } ] } ] }
Detención de la solicitud de permisos con el consentimiento dinámico
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
yApplication.Read
. El permiso delegadoAnalytics.Read
y el permiso de aplicaciónApplication.Read
ya no son necesarios para esta aplicación. Solo requiereUser.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
Uso de 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); } });
Revocación del consentimiento para los permisos quitados para la aplicación empresarial
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 permiso 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 a fin de 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 a fin de 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 mediante 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, vea Revocar el consentimiento del usuario final.
Sustitución de un permiso
Debe reemplazar un permiso con privilegios elevados cuando baste 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 Detención de la solicitud de permisos sin usar e Incorporación de permisos de este artículo.