Resumen y restricciones de los identificadores URI de redireccionamiento (direcciones URL de respuesta)
Para iniciar sesión en un usuario, la aplicación debe enviar una solicitud de inicio de sesión al punto de conexión de autorización de Microsoft Entra, con un identificador URI de redireccionamiento especificado como parámetro. El identificador URI de redireccionamiento es una característica de seguridad crítica que garantiza que el servidor de autenticación de Microsoft Entra solo envía códigos de autorización y tokens de acceso al destinatario previsto. En este artículo se describen las características y restricciones de los identificadores URI de redireccionamiento en la Plataforma de identidad de Microsoft.
¿Qué es un identificador URI de redireccionamiento?
Un identificador URI de redireccionamiento, o dirección URL de respuesta, es la ubicación a la que el servidor de autenticación de Microsoft Entra envía al usuario una vez que haya sido autorizado correctamente y se le haya concedido un token de acceso. Para iniciar sesión en un usuario, la aplicación debe enviar una solicitud de inicio de sesión con un URI de redireccionamiento especificado como parámetro, por lo que después de que el usuario haya iniciado sesión correctamente, el servidor de autenticación lo redirigirá y emitirá un token de acceso al URI de redireccionamiento especificado en la solicitud de inicio de sesión.
¿Por qué es necesario agregar los identificadores URI de redireccionamiento a un registro de aplicaciones?
Por motivos de seguridad, el servidor de autenticación no redirigirá a los usuarios ni enviará tokens a un identificador URI que no se agregue a un registro de aplicaciones. Los servidores de inicio de sesión de Microsoft Entra solo redirigen a los usuarios y envían tokens a los identificadores URI de redireccionamiento que se han agregado a un registro de aplicaciones. Si el identificador URI de redireccionamiento especificado en la solicitud de inicio de sesión no coincide con ninguno de los identificadores URI de redireccionamiento que ha agregado en la aplicación, recibirá un mensaje de error como AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application
.
Para obtener más información sobre los códigos de error, consulte Códigos de error de autenticación y autorización de Microsoft Entra.
¿Debo agregar un identificador URI de redireccionamiento a un registro de aplicaciones?
Agregar un identificador URI de redireccionamiento al registro de aplicaciones depende del protocolo de autorización que usa la aplicación. Debe agregar los identificadores URI de redireccionamiento adecuados al registro de aplicaciones si la aplicación usa los siguientes protocolos de autorización:
- Flujo de código de autorización de OAuth 2.0
- Flujo de credenciales del cliente de OAuth 2.0
- Flujo de concesión implícita de OAuth 2.0
- OpenID Connect
- Protocolo SAML de inicio de sesión único
No es necesario agregar identificadores URI de redireccionamiento al registro de aplicaciones si la aplicación usa los siguientes protocolos de autorización o características.
- Autenticación nativa
- Flujo de código de dispositivo de OAuth 2.0
- Flujo con derechos delegados de OAuth 2.0
- Flujo de credenciales de contraseña de administrador del recurso de OAuth 2.0
- Flujo de autenticación integrada de Windows
- Proveedor de identidades (IdP) de SAML 2.0 para el inicio de sesión único
¿A qué plataforma debo agregar mis identificadores URI de redireccionamiento?
Si la aplicación que va a compilar contiene uno o varios identificadores URI de redireccionamiento en el registro de aplicaciones, deberá habilitar una configuración de flujo de cliente público. En las tablas siguientes se proporcionan instrucciones sobre el tipo de identificador URI de redireccionamiento que debe agregar o no en función de la plataforma en la que se compila la aplicación.
Configuración del identificador URI de redireccionamiento de aplicaciones web
Tipo de aplicación | Marcos o lenguajes típicos | Plataforma para agregar identificadores URI de redireccionamiento en el registro de aplicaciones |
---|---|---|
Una aplicación web tradicional donde la mayor parte de la lógica de la aplicación se realiza en el servidor | Node.js, web, ASP.NET, Python, Java, ASP.NET Core, PHP, Ruby, Blazor Server | Web |
Una aplicación de página única donde la mayor parte de la lógica de la interfaz de usuario se realiza en un navegador web que se comunica con el servidor web principalmente mediante API web | JavaScript, Angular, React, Blazor WebAssembly, Vue.js | Aplicación de página única (SPA) |
Configuración del identificador URI de redireccionamiento de aplicaciones móviles y de escritorio
Tipo de aplicación | Marcos o lenguajes típicos | Plataforma para agregar identificadores URI de redireccionamiento en el registro de aplicaciones |
---|---|---|
Una aplicación para iOS o macOS, excepto los escenarios enumerados a continuación en esta tabla | Swift, Objective-C, Xamarin | IOS o macOS |
Una aplicación para Android | Java, Kotlin, Xamarin | Android |
Una aplicación que se ejecuta de forma nativa en un dispositivo móvil o un equipo de escritorio | Node.js, Electron, escritorio de Windows, UWP, React Native, Xamarin, Android, iOS/macOS | Aplicaciones móviles y de escritorio |
Si va a compilar una aplicación para iOS con uno de los métodos siguientes, use una plataforma de aplicaciones móviles y de escritorio para agregar un identificador URI de redireccionamiento:
- Aplicaciones para iOS que usan SDK antiguos (ADAL)
- Aplicaciones para iOS que usan SDK de código abierto (AppAuth)
- Aplicaciones para iOS que usan tecnología multiplataforma que no admitimos (Flutter)
- Aplicaciones para iOS que implementan nuestros protocolos de OAuth directamente
- Aplicaciones para macOS que usan tecnología multiplataforma que no admitimos (Electron)
Aplicaciones que no requieren un identificador URI de redireccionamiento
Tipo de aplicación | Ejemplos y notas | Flujo de OAuth asociado |
---|---|---|
Aplicaciones que se ejecutan en dispositivos que no tienen teclado | Aplicaciones que se ejecutan en Smart TV, dispositivos IoT o una impresora | Flujo de código de dispositivo (más información) |
Las aplicaciones que controlan las contraseñas que los usuarios escriben directamente, en lugar de redirigir a los usuarios al sitio web de inicio de sesión hospedado de Entra y permitir que Entra controle la contraseña de usuario de forma segura | Solo debe usar este flujo cuando otros flujos más seguros, como el flujo de código de autorización, no sean viables, porque no es tan seguro | Flujo de credenciales de contraseña del administrador del recurso (más información) |
Aplicaciones de escritorio o móviles que se ejecutan en Windows o en una máquina conectada a un dominio de Windows (unido a AD o Azure AD) mediante el flujo de autenticación integrada de Windows en lugar del administrador de cuentas web | Una aplicación móvil o de escritorio que debería iniciar sesión automáticamente después de que el usuario haya iniciado sesión en el sistema del PC Windows con una credencial de Entra | Flujo de autenticación integrada de Windows (más información) |
¿Cuáles son las restricciones de los identificadores URI de redireccionamiento para las aplicaciones de Microsoft Entra?
El modelo de aplicación de Microsoft Entra especifica las restricciones siguientes para redirigir los identificadores URI:
Los identificadores URI de redireccionamiento deben comenzar con el esquema
https
, con excepciones para algunos identificadores URI de redireccionamiento de localhost.Los URI de redireccionamiento distinguen mayúsculas de minúsculas y deben coincidir con el uso de mayúsculas y minúsculas de la ruta de acceso de la dirección URL de la aplicación en ejecución.
Ejemplos:
- Si la aplicación incluye
.../abc/response-oidc
como parte de su ruta de acceso, no especifique.../ABC/response-oidc
en el identificador URI de redireccionamiento. Dado que el navegador web tiene en cuenta las mayúsculas y minúsculas de las rutas de acceso, se pueden excluir las cookies asociadas con.../abc/response-oidc
si se redirigen a la dirección URL.../ABC/response-oidc
con mayúsculas y minúsculas no coincidentes.
- Si la aplicación incluye
Los URI de redireccionamiento que no están configurados con un segmento de ruta de acceso se devuelven con una barra diagonal final ("
/
") en la respuesta. Esto solo se aplica cuando el modo de respuesta esquery
ofragment
.Ejemplos:
https://contoso.com
se devuelve comohttps://contoso.com/
http://localhost:7071
se devuelve comohttp://localhost:7071/
Los identificadores URI de redireccionamiento que contienen un segmento de ruta de acceso no se anexan con una barra diagonal final en la respuesta.
Ejemplos:
https://contoso.com/abc
se devuelve comohttps://contoso.com/abc
https://contoso.com/abc/response-oidc
se devuelve comohttps://contoso.com/abc/response-oidc
Los identificadores URI de redireccionamiento no admiten caracteres especiales:
! $ ' ( ) , ;
Los identificadores URI de redireccionamiento no admiten nombres de dominio internacionalizados
Número máximo de identificadores URI de redireccionamiento y longitud de los identificadores URI
El número máximo de identificadores URI de redireccionamiento no se puede generar por motivos de seguridad. Si el escenario requiere más identificadores URI de redireccionamiento que el límite máximo permitido, considere la posibilidad de utilizar el siguiente enfoque de parámetro de estado como solución. En la tabla siguiente se muestra el número máximo de identificadores URI de redireccionamiento que puede agregar a un registro de aplicaciones en la Plataforma de identidad de Microsoft.
Cuentas en las que se inicia sesión | Número máximo de identificadores URI de redireccionamiento | Descripción |
---|---|---|
Cuentas profesionales o educativas de Microsoft en el inquilino de Microsoft Entra de cualquier organización | 256 | El campo signInAudience del manifiesto de aplicación está establecido en AzureADMyOrg o AzureADMultipleOrgs. |
Cuentas personales de Microsoft y profesionales y educativas | 100 | El campo signInAudience del manifiesto de aplicación está establecido en AzureADandPersonalMicrosoftAccount. |
Puede usar un máximo de 256 caracteres para cada identificador URI de redireccionamiento que agregue a un registro de aplicaciones.
Identificadores URI de redireccionamiento en una aplicación frente a objetos de entidad de servicio
- Agregue siempre los identificadores URI de redireccionamiento solo al objeto de la aplicación.
- No agregue nunca valores de identificador URI a una entidad de servicio porque estos valores se pueden quitar cuando el objeto de entidad de servicio se sincroniza con el objeto de la aplicación. Esto puede ocurrir debido a cualquier operación de actualización que desencadena una sincronización entre los dos objetos.
Compatibilidad con parámetros de consulta en los URI de redireccionamiento
Los parámetros de consulta se permiten en los identificadores URI de redireccionamiento para aplicaciones que solo inician sesión de usuarios con cuentas profesionales o educativas.
Los parámetros de consulta no se permiten en los identificadores URI de redireccionamiento para cualquier registro de aplicaciones configurado para iniciar sesión de los usuarios con cuentas personales de Microsoft como Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live o Microsoft 365.
Público de información de inicio de sesión de registro de aplicaciones | Admite parámetros de consulta en el identificador URI de redireccionamiento |
---|---|
Cuentas de este directorio organizativo solo (solo Contoso: inquilino único) | |
Cuentas de cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino) | |
Cuentas de cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino) y cuentas personales de Microsoft (como Skype y Xbox) | |
Solo cuentas personales de Microsoft |
Esquemas admitidos
HTTPS: el esquema HTTPS (https://
) es compatible con todos los identificadores URI de redireccionamiento basados en HTTP.
HTTP: el esquema HTTP (http://
) solo es compatible con los URI de localhost y solo se debe usar durante el desarrollo y las pruebas de aplicaciones locales activas.
Identificador URI de redireccionamiento de ejemplo | Validez |
---|---|
https://contoso.com |
Válido |
https://contoso.com/abc/response-oidc |
Válido |
https://localhost |
Válido |
http://contoso.com/abc/response-oidc |
No válido |
http://localhost |
Válido |
http://localhost/abc |
Válido |
Excepciones de localhost
Según las secciones 8.3 y 7.3 de RFC 8252, los identificadores URI de redireccionamiento de "bucle invertido" o "localhost" incluyen dos consideraciones especiales:
- Los esquemas de identificadores URI
http
son aceptables porque el redireccionamiento nunca sale del dispositivo. Por tanto, ambos identificadores URI son aceptables:http://localhost/myApp
https://localhost/myApp
- Debido a los intervalos de puertos efímeros que suelen necesitar las aplicaciones nativas, el componente de puerto (por ejemplo,
:5001
o:443
) se omite con el fin de buscar coincidencias con un identificador URI de redireccionamiento. Como resultado, todos estos identificadores URI se consideran equivalentes:http://localhost/MyApp
http://localhost:1234/MyApp
http://localhost:5000/MyApp
http://localhost:8080/MyApp
Desde el punto de vista del desarrollo, esto significa algunas cosas:
No registre varios identificadores URI de redireccionamiento en los que solo el puerto es distinto. El servidor de inicio de sesión selecciona uno arbitrariamente y usará el comportamiento asociado a ese identificador URI de redireccionamiento (por ejemplo, si es una redireccionamiento de tipo
web
,native
ospa
).Esto es especialmente importante si desea utilizar flujos de autenticación diferentes en el mismo registro de aplicaciones, por ejemplo, la concesión de código de autorización y el flujo implícito. Para asociar el comportamiento de respuesta correcto con cada identificador URI de redireccionamiento, el servidor de inicio de sesión debe ser capaz de distinguir entre los identificadores URI de redireccionamiento y no puede hacerlo cuando solo difiere el puerto.
Para registrar varios identificadores URI de redireccionamiento en localhost a fin de probar diferentes flujos durante el desarrollo, puede diferenciarlos mediante el componente ruta de acceso del identificador URI. Por ejemplo,
http://localhost/MyWebApp
no coincide conhttp://localhost/MyNativeApp
.La dirección de bucle invertido IPv6 (
[::1]
) no se admite actualmente.
Es preferible 127.0.0.1 frente a localhost
Para evitar la interrupción de la aplicación a causa de servidores de seguridad con configuraciones erróneas o interfaces de red cuyo nombre ha cambiado, use la dirección de bucle invertido del literal de IP 127.0.0.1
en el identificador URI de redireccionamiento en lugar de localhost
. Por ejemplo, https://127.0.0.1
.
Sin embargo, no puede usar el cuadro de texto URI de redireccionamiento en Azure Portal para agregar un identificador URI de redireccionamiento basado en bucles invertidos que use el esquema http
:
Para agregar un identificador URI de redireccionamiento que usa el esquema http
con la dirección de bucle invertido 127.0.0.1
, actualmente debe modificar el atributo replyUrlsWithType en el manifiesto de la aplicación.
Restricciones en los caracteres comodín en los identificadores URI de redireccionamiento
Los identificadores URI con caracteres comodín como https://*.contoso.com
pueden parecer prácticos, pero se deben evitar debido a las implicaciones de seguridad. Según la especificación de OAuth 2.0 (sección 3.1.2 de RFC 6749), un identificador URI de punto de conexión de redireccionamiento debe ser un URI absoluto. Por lo tanto, cuando un identificador URI con caracteres comodín configurado coincide con un identificador URI de redireccionamiento, se quitan las cadenas de consulta y los fragmentos del identificador URI de redireccionamiento.
Los identificadores URI con caracteres comodín no se admiten actualmente en los registros de aplicaciones configurados para iniciar sesión en cuentas personales de Microsoft y cuentas profesionales o educativas. Sin embargo, se permiten los identificadores URI con caracteres comodín para las aplicaciones que están configuradas para iniciar sesión solo en cuentas profesionales o educativas del inquilino de Microsoft Entra de la organización.
Para agregar identificadores URI de redireccionamiento con caracteres comodín a los registros de aplicaciones que inician la sesión de cuentas profesionales o educativas, use el editor de manifiestos de aplicación en Registros de aplicaciones en Azure Portal. Aunque es posible establecer un identificador URI de redireccionamiento con un carácter comodín usando el editor de manifiestos, se recomienda encarecidamente adherirse a la sección 3.1.2 de la especificación RFC 6749 y usar únicamente identificadores URI absolutos.
Si el escenario requiere más identificadores URI de redireccionamiento que el límite máximo permitido, en lugar de agregar un identificador URI de redireccionamiento con caracteres comodín, considere la posibilidad de utilizar el siguiente enfoque de parámetro de estado.
Uso de un parámetro de estado
Si tiene varios subdominios y el escenario requiere, tras su correcta autenticación, redirigir a los usuarios a la misma página en la que comenzaron, puede ser útil usar un parámetro de estado.
Según este enfoque:
- Cree un identificador URI de redireccionamiento "compartido" por cada aplicación para procesar los tokens de seguridad que reciba del punto de conexión de autorización.
- La aplicación puede enviar parámetros específicos de la aplicación (por ejemplo, la dirección URL del subdominio donde se originó el usuario o algo como la información de marca) en el parámetro de estado. Cuando use un parámetro de estado, protéjase contra las infracciones de CSRF, tal como se especifica en la sección 10.12 de RFC 6749.
- Los parámetros específicos de la aplicación incluyen toda la información necesaria para que la aplicación represente la experiencia correcta para el usuario, es decir, para que construya el estado de la aplicación adecuado. El punto de conexión de autorización de Microsoft Entra elimina el código HTML del parámetro de estado, por lo que debe asegurarse de no pasar contenido HTML en este parámetro.
- Cuando Microsoft Entra ID envía una respuesta al identificador URI de redireccionamiento "compartido", envía el parámetro de estado de vuelta a la aplicación.
- Después, la aplicación puede usar el valor del parámetro de estado para determinar a qué dirección URL debe enviar al usuario. Asegúrese de validar la protección contra CSRF.
Advertencia
Este enfoque permite que un cliente en peligro modifique los parámetros adicionales que se envían en el parámetro de estado, con lo que se redirige al usuario a una dirección URL diferente, que es la amenaza de redirector abierto que se describe en RFC 6819. Por lo tanto, el cliente debe proteger estos parámetros, para lo que debe cifrar el estado o comprobarlo por otros medios, por ejemplo, mediante la validación del nombre de dominio en el identificador URI de redireccionamiento con el token.
Pasos siguientes
Obtenga más información sobre el registro de aplicaciones en Manifiesto de aplicación.