Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: Inquilinos del personal
Inquilinos externos (más información)
En este artículo, aprenderá a configurar un proxy inverso mediante la aplicación de Azure Functions para administrar encabezados CORS en un entorno de prueba para una aplicación de página única (SPA) que usa API de autenticación nativa.
La API de autenticación nativa no admite el uso compartido de recursos entre orígenes (CORS). Por lo tanto, una aplicación de página única (SPA) que usa esta API para la autenticación de usuarios no puede realizar solicitudes correctas desde código JavaScript de front-end. Para resolver este problema, debe agregar un servidor proxy entre la SPA y la API de autenticación nativa. Este servidor proxy inserta los encabezados CORS adecuados en la respuesta.
Esta solución tiene fines de prueba y no se debe usar en un entorno de producción. Si busca una solución para usarla en un entorno de producción, se recomienda usar una solución de Azure Front Door, consulte las instrucciones de Uso de Azure Front Door como proxy inverso para administrar encabezados CORS para SPA en producción.
Prerrequisitos
- Una suscripción de Azure. Cree una cuenta gratuita.
- Registrar
Microsoft.App
proveedor de recursos, consulte Cómo registrar un proveedor de recursos. Solo tiene que completar este paso una vez para cada suscripción recién creada. - Instale la CLI para desarrolladores de Azure (azd).
- Una SPA de ejemplo a la que puede acceder a través de una dirección URL como
http://www.contoso.com
:- Puede usar la aplicación React que se describe en Guía rápida: Autentica a los usuarios en un SPA de React de ejemplo mediante la API de autenticación nativa. Sin embargo, no configure ni ejecute el servidor proxy, ya que en esta guía se describe esa configuración.
- Una vez que ejecute la aplicación, registre la dirección URL de la aplicación para usarla más adelante en esta guía.
Creación de un proxy inverso en una aplicación de funciones de Azure mediante la plantilla de la CLI para desarrolladores de Azure (azd)
Para inicializar la plantilla azd, ejecute el siguiente comando:
azd init --template https://github.com/azure-samples/ms-identity-extid-cors-proxy-function
Cuando se le solicite, escriba un nombre para el entorno azd. Este nombre se usa como prefijo para el grupo de recursos, por lo que debe ser único dentro de la suscripción de Azure.
Para iniciar sesión en Azure, ejecute el siguiente comando:
azd auth login
Para compilar, aprovisionar e implementar los recursos de la aplicación, ejecute el siguiente comando:
azd up
Cuando se le solicite, escriba la siguiente información para completar la creación de recursos:
-
Azure Location
: la ubicación de Azure donde se implementan los recursos. -
Azure Subscription
: la suscripción de Azure donde se implementan tus recursos. -
corsAllowedOrigin
: dominio de origen desde el que se permiten solicitudes CORS en el formato SCHEME://DOMAIN:PORT, por ejemplo, http://localhost:3000. -
tenantSubdomain
: el subdominio del inquilino externo que estamos usando como proxy. Por ejemplo, si el dominio principal del cliente escontoso.onmicrosoft.com
, utilicecontoso
. Si no tiene su subdominio de inquilino, obtenga información sobre cómo leer los datos de su inquilino.
-
Prueba tu SPA de ejemplo con el proxy inverso
En la SPA de ejemplo, abra el archivo API\React\ReactAuthSimple\src\config.ts y, a continuación, reemplace:
- el valor de
BASE_API_URL
, http://localhost:3001/api yhttps://Enter_App_Function_Name_Here.azurewebsites.net
. - el marcador de posición
Enter_App_Function_Name_Here
que lleva el nombre de tu aplicación de funciones. Si es necesario, vuelva a ejecutar el SPA de ejemplo.
- el valor de
Vaya a la dirección URL de SPA de ejemplo y pruebe los flujos de registro, inicio de sesión y restablecimiento de contraseña. La aplicación SPA debe funcionar correctamente, ya que el proxy inverso administra correctamente los encabezados CORS.