Consentimiento del administrador en la Plataforma de identidad de Microsoft
Algunos permisos requieren el consentimiento de un administrador antes de poder concederlos en un inquilino. También puede usar el punto de conexión de consentimiento del administrador para conceder permisos a todo un inquilino.
Se recomienda: Iniciar la sesión del usuario en la aplicación
Normalmente, cuando se compila una aplicación que usa el punto de conexión de consentimiento del administrador, la aplicación necesita una página o una vista en la que el administrador pueda aprobar los permisos de la aplicación. Esta página puede ser parte del flujo de inicio de sesión de la aplicación o de la configuración de la aplicación, o bien puede ser un flujo de "conexión" dedicado. En muchos casos, tiene sentido que la aplicación muestre esta vista de conexión solo después de que un usuario haya iniciado sesión con una cuenta Microsoft profesional o educativa.
Al iniciar la sesión del usuario en la aplicación, puede identificar la organización a la que pertenece el administrador antes de pedirle que apruebe los permisos necesarios. Aunque no es estrictamente necesario, puede ayudarle a crear una experiencia más intuitiva para los usuarios de la organización.
Solicitud de los permisos de un administrador de directorios
Cuando esté listo para solicitar permisos al administrador de la organización, puede redirigir al usuario al punto de conexión de consentimiento del administrador de la Plataforma de identidad de Microsoft.
https://login.microsoftonline.com/{tenant}/v2.0/adminconsent
?client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
&redirect_uri=http://localhost/myapp/permissions
&state=12345
Parámetro | Condition | Descripción |
---|---|---|
tenant |
Obligatorio | El inquilino de directorio al que quiere solicitar permiso. Puede proporcionarse en formato de GUID o de nombre descriptivo, O puede hacerse referencia genéricamente con organizations , como se muestra en el ejemplo. No use "común", ya que las cuentas personales no pueden proporcionar consentimiento del administrador salvo en el contexto de un inquilino. Para garantizar una mejor compatibilidad con las cuentas personales que administran los inquilinos, use el identificador de inquilino cuando sea posible. |
client_id |
Obligatorio | El identificador de aplicación (cliente) que elcentro de administración de Microsoft Entra: experiencia de registro de aplicaciones asignó a la aplicación. |
redirect_uri |
Obligatorio | El URI de redireccionamiento adonde desea que se envíe la respuesta para que la controle la aplicación. Debe coincidir exactamente con uno de los identificadores URI de redirección que registró el Portal de registro de aplicaciones. |
state |
Recomendado | Un valor incluido en la solicitud que se devolverá también en la respuesta del token. Puede ser una cadena de cualquier contenido que desee. Use el estado para codificar información sobre el estado del usuario en la aplicación antes de que se produzca la solicitud de autenticación, por ejemplo, la página o vista en la que estaba. |
scope |
Obligatorio | Define el conjunto de permisos que la aplicación solicita. Puede ser estático (mediante /.default ) o ámbitos dinámicos. Puede incluir ámbitos de OIDC (openid , profile , email ). |
En este punto, Microsoft Entra ID requiere que un administrador del inquilino inicie sesión para completar la solicitud. Se solicita al administrador que apruebe todos los permisos solicitados en el parámetro scope
. Si ha usado un valor estático (/.default
), funcionará como el punto de conexión de consentimiento del administración de la versión v1.0 y el consentimiento de solicitud para todos los ámbitos que se encuentran en los permisos necesarios (para el usuario y la aplicación). Para solicitar permisos de aplicación, debe usar el valor /.default
. Si no desea que los administradores vean un permiso determinado en la pantalla de consentimiento del administrador siempre que use /.default
, el procedimiento recomendado es no poner el permiso en la sección de permisos necesarios. En su lugar, puede usar el consentimiento dinámico para agregar los permisos que desea que estén en la pantalla de consentimiento en tiempo de ejecución, en lugar de usar /.default
.
Respuesta correcta
Si el administrador aprueba los permisos para la aplicación, la respuesta correcta tendrá un aspecto similar al siguiente:
http://localhost/myapp/permissions
?admin_consent=True
&tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee
&scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
&state=12345
Parámetro | Descripción |
---|---|
tenant |
El inquilino del directorio que concedió los permisos solicitados, en formato GUID. |
state |
Un valor incluido en la solicitud que también se devolverá en la respuesta del token. Puede ser una cadena de cualquier contenido que desee. El estado se usa para codificar información sobre el estado del usuario en la aplicación antes de que se haya producido la solicitud de autenticación, por ejemplo, la página o vista en la que estaban. |
scope |
Conjunto de permisos al que se concedió acceso a la aplicación. |
admin_consent |
Se establecerá en True . |
Advertencia
Nunca utilice el valor ID de inquilino del parámetro tenant
para autenticar o autorizar usuarios. Personas con malas intenciones pueden actualizar y enviar el valor de ID del inquilino para suplantar una respuesta a su aplicación. Esta situación puede hacer que la aplicación se exponga a incidentes de seguridad.
Respuesta de error
http://localhost/myapp/permissions
?admin_consent=True
&error=consent_required
&error_description=AADSTS65004%3a+The+resource+owner+or+authorization+server+denied+the+request.%0d%0aTrace+ID%3a+0000aaaa-11bb-cccc-dd22-eeeeee333333%0d%0aCorrelation+ID%3a+8478d534-5b2c-4325-8c2c-51395c342c89%0d%0aTimestamp%3a+2019-09-24+18%3a34%3a26Z
&state=12345
Cuando se agregan a los parámetros que se ven en una respuesta correcta, los parámetros de error se ven como se muestra a continuación.
Parámetro | Descripción |
---|---|
error |
Una cadena de código de error que puede utilizarse para clasificar los tipos de errores que se producen y para reaccionar ante ellos. |
error_description |
Un mensaje de error específico que puede ayudar a un desarrollador a identificar la causa de un error. |
state |
Un valor incluido en la solicitud que también se devolverá en la respuesta del token. Puede ser una cadena de cualquier contenido que desee. El estado se usa para codificar información sobre el estado del usuario en la aplicación antes de que se haya producido la solicitud de autenticación, por ejemplo, la página o vista en la que estaban. |
admin_consent |
Se establecerá en True para indicar que esta respuesta se produjo en un flujo de consentimiento del administrador. |
Pasos siguientes
- Consulte Conversión de una aplicación de inquilino único en una aplicación multiinquilino
- Obtenga información sobre cómo se admite el consentimiento en la capa del protocolo OAuth 2.0 durante el flujo de concesión del código de autorización.
- Aprenda cómo una aplicación multiinquilino puede usar la plataforma de consentimiento para implementar el consentimiento de "usuario" y "administrador", que admite patrones de aplicación multinivel más avanzados.
- Comprensión de las experiencias de consentimiento de la aplicación Microsoft Entra