Ejecución de una aplicación web básica de AzureRun a basic web application in Azure

Esta arquitectura de referencia muestra prácticas demostradas para una aplicación web que usa Azure App Service y Azure SQL Database.This reference architecture shows proven practices for a web application that uses Azure App Service and Azure SQL Database. Implemente esta solución.Deploy this solution.

Arquitectura de referencia para una aplicación web básica en Azure

Descargue un archivo Visio de esta arquitectura.Download a Visio file of this architecture.

ArquitecturaArchitecture

Nota

Esta arquitectura no se centra en el desarrollo de aplicaciones y no supone ningún marco de trabajo de la aplicación concreto.This architecture does not focus on application development, and does not assume any particular application framework. El objetivo es comprender cómo encajan entre sí los distintos servicios de Azure.The goal is to understand how various Azure services fit together.

La arquitectura consta de los siguientes componentes:The architecture has the following components:

  • Grupo de recursos.Resource group. Un grupo de recursos es un contenedor lógico de recursos de Azure.A resource group is a logical container for Azure resources.

  • Aplicación de App Service.App Service app. Azure App Service es una plataforma totalmente administrada para crear e implementar aplicaciones en la nube.Azure App Service is a fully managed platform for creating and deploying cloud applications.

  • Plan de App Service.App Service plan. Un plan de App Service proporciona las máquinas virtuales (VM) administradas que hospedan la aplicación.An App Service plan provides the managed virtual machines (VMs) that host your app. Todas las aplicaciones asociadas con un plan se ejecutan en las mismas instancias de máquina virtual.All apps associated with a plan run on the same VM instances.

  • Ranuras de implementación.Deployment slots. Una ranura de implementación le permite almacenar provisionalmente una implementación y, a continuación, intercambiarla con la implementación de producción.A deployment slot lets you stage a deployment and then swap it with the production deployment. De este modo, evita realizar la implementación directamente en producción.That way, you avoid deploying directly into production. Consulte la sección Manejabilidad para obtener recomendaciones específicas.See the Manageability section for specific recommendations.

  • Dirección IP.IP address. La aplicación de App Service tiene una dirección IP pública y un nombre de dominio.The App Service app has a public IP address and a domain name. El nombre de dominio es un subdominio de azurewebsites.net, como contoso.azurewebsites.net.The domain name is a subdomain of azurewebsites.net, such as contoso.azurewebsites.net.

  • Azure DNS.Azure DNS. Azure DNS es un servicio de hospedaje para dominios DNS que permite resolver nombres mediante la infraestructura de Microsoft Azure.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Al hospedar dominios en Azure, puede administrar los registros DNS con las mismas credenciales, API, herramientas y facturación que con los demás servicios de Azure.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services. Para usar un nombre de dominio personalizado, como contoso.com, cree registros DNS que asignen el nombre de dominio personalizado a la dirección IP.To use a custom domain name (such as contoso.com) create DNS records that map the custom domain name to the IP address. Para más información, consulte Configurar un nombre de dominio personalizado en Azure App Service.For more information, see Configure a custom domain name in Azure App Service.

  • Azure SQL Database.Azure SQL Database. SQL Database es una base de datos relacional como servicio en la nube.SQL Database is a relational database-as-a-service in the cloud. SQL Database comparte su base de código con el motor de base de datos de Microsoft SQL Server.SQL Database shares its code base with the Microsoft SQL Server database engine. Según los requisitos de la aplicación, también puede usar Azure Database for MySQL o Azure Database for PostgreSQL.Depending on your application requirements, you can also use Azure Database for MySQL or Azure Database for PostgreSQL. Se trata de servicios de base de datos totalmente administrados, basados en los motores de base de datos MySQL Server y Postgres de código abierto, respectivamente.These are fully managed database services, based on the open-source MySQL Server and Postgres database engines, respectively.

  • Servidor lógico.Logical server. En Azure SQL Database, un servidor lógico hospeda las bases de datos.In Azure SQL Database, a logical server hosts your databases. Se pueden crear varias bases de datos por servidor lógico.You can create multiple databases per logical server.

  • Azure Storage.Azure Storage. Cree una cuenta de almacenamiento de Azure con un contenedor de blobs para almacenar los registros de diagnóstico.Create an Azure storage account with a blob container to store diagnostic logs.

  • Azure Active Directory (Azure AD) .Azure Active Directory (Azure AD). Use Azure AD u otro proveedor de identidades para la autenticación.Use Azure AD or another identity provider for authentication.

RecomendacionesRecommendations

Los requisitos pueden diferir de los de la arquitectura que se describe aquí.Your requirements might differ from the architecture described here. Use las recomendaciones de esta sección como punto de partida.Use the recommendations in this section as a starting point.

Plan de App ServiceApp Service plan

Use los niveles estándar o Premium, ya que admiten el escalado horizontal, el escalado automático y la capa de sockets seguros (SSL).Use the Standard or Premium tiers, because they support scale-out, autoscale, and secure sockets layer (SSL). Cada nivel admite varios tamaños de instancia, que se diferencian por el número de núcleos y la memoria.Each tier supports several instance sizes that differ by number of cores and memory. Puede cambiar el nivel o el tamaño de la instancia después de crear un plan.You can change the tier or instance size after you create a plan. Para obtener más información acerca de los planes de App Service, consulte precios de App Service.For more information about App Service plans, see App Service Pricing.

Se le cobra por las instancias del plan de App Service, aunque la aplicación esté detenida.You are charged for the instances in the App Service plan, even if the app is stopped. Asegúrese de eliminar los planes que no use (por ejemplo, las implementaciones de prueba).Make sure to delete plans that you aren't using (for example, test deployments).

SQL DatabaseSQL Database

Use la versión V12 de SQL Database.Use the V12 version of SQL Database. SQL Database admite los niveles de serviciobásico, estándar y Premium, con varios niveles de rendimiento dentro de cada nivel medidos en unidades de transacción de base de datos (DTU).SQL Database supports Basic, Standard, and Premium service tiers, with multiple performance levels within each tier measured in Database Transaction Units (DTUs). Planee la capacidad, y elija un nivel de servicio y un nivel de rendimiento que se ajusten a sus necesidades.Perform capacity planning and choose a tier and performance level that meets your requirements.

ÁreaRegion

Aprovisione el plan de App Service y la instancia de SQL Database en la misma región para minimizar la latencia de red.Provision the App Service plan and the SQL Database in the same region to minimize network latency. Por lo general, elija la región más cercana a los usuarios.Generally, choose the region closest to your users.

El grupo de recursos también tiene una región, que especifica dónde se almacenan los metadatos de la implementación.The resource group also has a region, which specifies where deployment metadata is stored. Coloque el grupo de recursos y sus recursos en la misma región.Put the resource group and its resources in the same region. Esto puede mejorar la disponibilidad durante la implementación.This can improve availability during deployment.

Consideraciones sobre escalabilidadScalability considerations

Una de las ventajas principales de Azure App Service es la posibilidad de escalar la aplicación en función de la carga.A major benefit of Azure App Service is the ability to scale your application based on load. Estas son algunas consideraciones que se deben tener en cuenta al planear el escalado de la aplicación.Here are some considerations to keep in mind when planning to scale your application.

Ajuste de escala de la aplicación de App ServiceScaling the App Service app

Hay dos formas de escalar una aplicación de App Service:There are two ways to scale an App Service app:

  • Escalar verticalmente, que significa cambiar el tamaño de la instancia.Scale up, which means changing the instance size. El tamaño de la instancia determina la memoria, el número de núcleos y el almacenamiento en cada instancia de máquina virtual.The instance size determines the memory, number of cores, and storage on each VM instance. La escalabilidad vertical se puede ajustar manualmente cambiando el tamaño de la instancia o el nivel del plan.You can scale up manually by changing the instance size or the plan tier.

  • Escalar horizontalmente, que significa agregar instancias para controlar el aumento de la carga.Scale out, which means adding instances to handle increased load. Cada nivel de precios tiene un número máximo de instancias.Each pricing tier has a maximum number of instances.

    Puede escalar horizontalmente de forma manual cambiando el recuento de instancias, o bien usar el escalado automático para que Azure agregue o quite instancias automáticamente según una programación y/o las métricas de rendimiento.You can scale out manually by changing the instance count, or use autoscaling to have Azure automatically add or remove instances based on a schedule and/or performance metrics. Cada operación de escala se realiza rápidamente y, normalmente, en unos segundos.Each scale operation happens quickly—typically within seconds.

    Para habilitar el escalado automático, cree un perfil de escalado automático que defina el número mínimo y máximo de instancias.To enable autoscaling, create an autoscale profile that defines the minimum and maximum number of instances. Los perfiles se pueden programar.Profiles can be scheduled. Por ejemplo, podría crear perfiles distintos para los días laborables y los fines de semana.For example, you might create separate profiles for weekdays and weekends. De manera opcional, un perfil contiene reglas sobre cuándo agregar o quitar instancias.Optionally, a profile contains rules for when to add or remove instances. (Ejemplo: agregar dos instancias si el uso de la CPU es superior al 70 % durante 5 minutos).(Example: Add two instances if CPU usage is above 70% for 5 minutes.)

Recomendaciones para el ajuste de escala de una aplicación web:Recommendations for scaling a web app:

  • En la medida de lo posible, evite la escalabilidad vertical y horizontal, ya que podría desencadenar un reinicio de la aplicación.As much as possible, avoid scaling up and down, because it may trigger an application restart. En su lugar, seleccione un nivel y un tamaño que satisfagan sus requisitos de rendimiento con la carga típica y, a continuación, escale horizontalmente las instancias para controlar los cambios en el volumen de tráfico.Instead, select a tier and size that meet your performance requirements under typical load and then scale out the instances to handle changes in traffic volume.
  • Habilite el escalado automático.Enable autoscaling. Si la aplicación tiene una carga de trabajo normal predecible, cree perfiles para programar los recuentos de instancias con antelación.If your application has a predictable, regular workload, create profiles to schedule the instance counts ahead of time. Si la carga de trabajo no es predecible, use el escalado automático basado en reglas para reaccionar a los cambios de carga cuando se produzcan.If the workload is not predictable, use rule-based autoscaling to react to changes in load as they occur. Puede combinar ambos enfoques.You can combine both approaches.
  • El uso de la CPU suele ser una buena métrica para las reglas de escalado automático.CPU usage is generally a good metric for autoscale rules. Sin embargo, debería realizar pruebas de carga de la aplicación, identificar posibles cuellos de botella y basar las reglas de escalado automático en esos datos.However, you should load test your application, identify potential bottlenecks, and base your autoscale rules on that data.
  • Las reglas de escalado automático incluyen un período de enfriamiento, que es el intervalo que se debe esperar una vez completada una acción de ajuste de escala antes de iniciar la siguiente.Autoscale rules include a cool-down period, which is the interval to wait after a scale action has completed before starting a new scale action. El período de enfriamiento permite que el sistema se estabilice antes de realizar otro ajuste de escala.The cool-down period lets the system stabilize before scaling again. Establezca un período de enfriamiento más corto para agregar instancias y uno más prolongado para quitarlas.Set a shorter cool-down period for adding instances, and a longer cool-down period for removing instances. Por ejemplo, establezca 5 minutos para agregar una instancia y 60 minutos para quitarla.For example, set 5 minutes to add an instance, but 60 minutes to remove an instance. Es mejor agregar nuevas instancias rápidamente bajo una carga intensa para controlar el tráfico adicional y, a continuación, reducir el escalado gradualmente.It's better to add new instances quickly under heavy load to handle the additional traffic, and then gradually scale back.

Ajuste de escala de SQL DatabaseScaling SQL Database

Si necesita un nivel de servicio o de rendimiento superior para SQL Database, puede escalar verticalmente bases de datos individuales sin tiempo de inactividad de la aplicación.If you need a higher service tier or performance level for SQL Database, you can scale up individual databases with no application downtime. Para obtener más información, consulte escalado de recursos de base de datos única en Azure SQL Database.For more information, see Scale single database resources in Azure SQL Database.

Consideraciones sobre disponibilidadAvailability considerations

En el momento de escribir este artículo, el acuerdo de nivel de servicio (SLA) de App Service es del 99,95 % y el SLA de SQL Database es del 99,99 % para los niveles Basic, Standard y Premium.At the time of writing, the service level agreement (SLA) for App Service is 99.95% and the SLA for SQL Database is 99.99% for Basic, Standard, and Premium tiers.

Nota

El SLA de App Service se aplica tanto a instancias únicas como múltiples.The App Service SLA applies to both single and multiple instances.

Copias de seguridadBackups

En caso de pérdida de datos, SQL Database proporciona restauración a un momento dado y restauración geográfica.In the event of data loss, SQL Database provides point-in-time restore and geo-restore. Estas características están disponibles en todos los niveles y se habilitan automáticamente.These features are available in all tiers and are automatically enabled. No es necesario programar ni administrar las copias de seguridad.You don't need to schedule or manage the backups.

Para obtener más información, consulte continuidad del negocio en la nube y recuperación ante desastres con SQL Database.For more information, see Cloud business continuity and database disaster recovery with SQL Database.

App Service proporciona una característica de copia de seguridad y restauración para los archivos de aplicación.App Service provides a backup and restore feature for your application files. Sin embargo, tenga en cuenta que los archivos de los que se realiza la copia de seguridad incluyen la configuración de la aplicación en texto sin formato y pueden incluir información confidencial, como cadenas de conexión.However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Evite el uso de la característica copia de seguridad de App Service para realizar copias de seguridad de las bases de datos SQL porque exporta la base de datos a un archivo BACPAC de SQL, que consume DTU.Avoid using the App Service backup feature to back up your SQL databases because it exports the database to a SQL BACPAC file, consuming DTUs. En su lugar, use la restauración a un momento dado de SQL Database descrita anteriormente.Instead, use SQL Database point-in-time restore described above.

Consideraciones sobre la manejabilidadManageability considerations

Cree grupos de recursos independientes para entornos de producción, desarrollo y pruebas.Create separate resource groups for production, development, and test environments. Esto facilita la administración de implementaciones, la eliminación de implementaciones de prueba y la asignación de derechos de acceso.This makes it easier to manage deployments, delete test deployments, and assign access rights.

Al asignar recursos a grupos de recursos, tenga en cuenta lo siguiente:When assigning resources to resource groups, consider the following:

  • Ciclo de vida.Lifecycle. En general, coloque los recursos con el mismo ciclo de vida en el mismo grupo de recursos.In general, put resources with the same lifecycle into the same resource group.
  • Acceso.Access. Puede usar el control de acceso basado en rol (RBAC) para aplicar directivas de acceso a los recursos de un grupo.You can use role-based access control (RBAC) to apply access policies to the resources in a group.
  • Facturación.Billing. Puede ver los costes acumulados del grupo de recursos.You can view the rolled-up costs for the resource group.

Para más información, consulte Información general de Azure Resource Manager.For more information, see Azure Resource Manager overview.

ImplementaciónDeployment

La implementación implica dos pasos:Deployment involves two steps:

  1. Aprovisionamiento de los recursos de Azure.Provisioning the Azure resources. Se recomienda utilizar plantillas de Azure Resource Manager para este paso.We recommend that you use Azure Resource Manager templates for this step. Las plantillas facilitan la automatización de las implementaciones a través de PowerShell o de la CLI de Azure.Templates make it easier to automate deployments via PowerShell or the Azure CLI.
  2. Implementación de la aplicación (código, archivos binarios y archivos de contenido).Deploying the application (code, binaries, and content files). Tiene varias opciones, incluida la implementación desde un repositorio de Git local, mediante Visual Studio, o bien la implementación continua desde el control de código fuente basado en la nube.You have several options, including deploying from a local Git repository, using Visual Studio, or continuous deployment from cloud-based source control. Consulte Documentación de implementación de Azure App Service.See Deploy your app to Azure App Service.

Una aplicación de App Service siempre tiene una ranura de implementación denominada production, que representa el sitio de producción en vivo.An App Service app always has one deployment slot named production, which represents the live production site. Se recomienda crear un espacio de ensayo para la implementación de actualizaciones.We recommend creating a staging slot for deploying updates. Las ventajas de usar un espacio de ensayo incluyen:The benefits of using a staging slot include:

  • Puede comprobar si la implementación finalizó correctamente antes de pasarla a producción.You can verify the deployment succeeded, before swapping it into production.
  • La implementación en un espacio de ensayo garantiza que todas las instancias estén preparadas antes de pasarlas a producción.Deploying to a staging slot ensures that all instances are warmed up before being swapped into production. Muchas aplicaciones presentan tiempos de preparación y arranque en frío considerables.Many applications have a significant warmup and cold-start time.

También se recomienda crear un tercer espacio que contendrá la última implementación correcta conocida.We also recommend creating a third slot to hold the last-known-good deployment. Después de intercambiar ensayo y producción, mueva la implementación de producción anterior (que ahora está en la fase de ensayo) en el último espacio correcto conocido.After you swap staging and production, move the previous production deployment (which is now in staging) into the last-known-good slot. De este modo, si detecta un problema más tarde, puede revertir rápidamente a la última versión correcta conocida.That way, if you discover a problem later, you can quickly revert to the last-known-good version.

11

Si realiza la reversión a una versión anterior, asegúrese de que los cambios del esquema de base de datos sean compatibles con versiones anteriores.If you revert to a previous version, make sure any database schema changes are backward compatible.

No use espacios en la implementación de producción para pruebas, ya que todas las aplicaciones del mismo plan de App Service comparten las mismas instancias de máquina virtual.Don't use slots on your production deployment for testing because all apps within the same App Service plan share the same VM instances. Por ejemplo, las pruebas de carga pueden degradar el sitio de producción en vivo.For example, load tests might degrade the live production site. En su lugar, use planes de App Service independientes para producción y prueba.Instead, create separate App Service plans for production and test. Al colocar las implementaciones de prueba en un plan independiente, se aíslan de la versión de producción.By putting test deployments into a separate plan, you isolate them from the production version.

ConfiguraciónConfiguration

Almacenar las opciones de configuración como configuración de la aplicación.Store configuration settings as app settings. Defina la configuración de la aplicación en las plantillas de Resource Manager, o bien mediante PowerShell.Define the app settings in your Resource Manager templates, or using PowerShell. En tiempo de ejecución, la configuración de la aplicación está disponible para la aplicación en forma de variables de entorno.At runtime, app settings are available to the application as environment variables.

Nunca compruebe contraseñas, claves de acceso ni cadenas de conexión en el control de código fuente.Never check passwords, access keys, or connection strings into source control. En su lugar, páselas como parámetros a un script de implementación que almacene estos valores como valores de configuración de la aplicación.Instead, pass these as parameters to a deployment script that stores these values as app settings.

Cuando intercambia una ranura de implementación, los valores de configuración de la aplicación se intercambian de forma predeterminada.When you swap a deployment slot, the app settings are swapped by default. Si necesita una configuración diferente para producción y ensayo, puede crear configuraciones de la aplicación que se ciñan a un espacio y no se intercambien.If you need different settings for production and staging, you can create app settings that stick to a slot and don't get swapped.

Diagnóstico y supervisiónDiagnostics and monitoring

Habilitar el registro de diagnóstico, incluido el registro de aplicaciones y el registro del servidor Web.Enable diagnostics logging, including application logging and web server logging. Configure el registro para usar Blob Storage.Configure logging to use Blob storage. Con fines de rendimiento, cree una cuenta de almacenamiento independiente para contener los registros de diagnóstico.For performance reasons, create a separate storage account for diagnostic logs. No use la misma cuenta de almacenamiento para los registros y los datos de la aplicación.Don't use the same storage account for logs and application data. Para obtener instrucciones más detalladas sobre el registro, vea Guía de supervisión y diagnóstico.For more detailed guidance on logging, see Monitoring and diagnostics guidance.

Use un servicio como New Relic o Application Insights para supervisar el rendimiento y el comportamiento de la aplicación en carga.Use a service such as New Relic or Application Insights to monitor application performance and behavior under load. Tenga en cuenta los límites de velocidad de datos para Application Insights.Be aware of the data rate limits for Application Insights.

Realice pruebas de carga mediante una herramienta como Azure DevOps o Visual Studio Team Foundation Server.Perform load testing, using a tool such as Azure DevOps or Visual Studio Team Foundation Server. Para obtener información general sobre el análisis de rendimiento en aplicaciones en la nube, consulte el manual de análisis de rendimiento.For a general overview of performance analysis in cloud applications, see Performance Analysis Primer.

Sugerencias para solucionar problemas de la aplicación:Tips for troubleshooting your application:

Consideraciones de seguridadSecurity considerations

En esta sección se enumeran las consideraciones de seguridad que son específicas de los servicios de Azure descritos en este artículo.This section lists security considerations that are specific to the Azure services described in this article. No es una lista completa de procedimientos de seguridad recomendados.It's not a complete list of security best practices. Para algunas consideraciones de seguridad adicionales, consulte protección de una aplicación en Azure App Service.For some additional security considerations, see Secure an app in Azure App Service.

Auditoría de SQL DatabaseSQL Database auditing

La auditoría puede ayudarle a mantener el cumplimiento de normativas, y a conocer las discrepancias y anomalías que pueden indicar problemas en el negocio o infracciones de seguridad sospechosas.Auditing can help you maintain regulatory compliance and get insight into discrepancies and irregularities that could indicate business concerns or suspected security violations. Vea Introducción a la auditoría de SQL Database.See Get started with SQL database auditing.

Ranuras de implementaciónDeployment slots

Cada ranura de implementación tiene una dirección IP pública.Each deployment slot has a public IP address. Proteja las ranuras de no producción mediante Azure Active Directory inicio de sesión para que solo los miembros de los equipos de desarrollo y DevOps puedan acceder a esos puntos de conexión.Secure the nonproduction slots using Azure Active Directory login so that only members of your development and DevOps teams can reach those endpoints.

RegistroLogging

Los registros nunca deben registrar las contraseñas de los usuarios ni otra información que pudiera utilizarse para cometer fraudes de identidad.Logs should never record users' passwords or other information that might be used to commit identity fraud. Borre esos detalles de los datos antes de almacenarlos.Scrub those details from the data before storing it.

SSLSSL

Una aplicación de App Service incluye un punto de conexión SSL en un subdominio de azurewebsites.net sin costo adicional alguno.An App Service app includes an SSL endpoint on a subdomain of azurewebsites.net at no additional cost. El punto de conexión SSL incluye un certificado comodín para el dominio *.azurewebsites.net.The SSL endpoint includes a wildcard certificate for the *.azurewebsites.net domain. Si usa un nombre de dominio personalizado, debe proporcionar un certificado que coincida con el dominio personalizado.If you use a custom domain name, you must provide a certificate that matches the custom domain. El enfoque más sencillo consiste en adquirir un certificado directamente a través de Azure Portal.The simplest approach is to buy a certificate directly through the Azure portal. También puede importar certificados de otras entidades emisoras de certificados.You can also import certificates from other certificate authorities. Para más información, consulte Compra y configuración de un certificado SSL para Azure App Service.For more information, see Buy and Configure an SSL Certificate for your Azure App Service.

Como procedimiento recomendado de seguridad, la aplicación debe exigir HTTPS mediante el redireccionamiento de las solicitudes HTTP.As a security best practice, your app should enforce HTTPS by redirecting HTTP requests. Puede implementar esto dentro de la aplicación o usar una regla de reescritura de URL, como se describe en habilitación de HTTPS para una aplicación en Azure App Service.You can implement this inside your application or use a URL rewrite rule as described in Enable HTTPS for an app in Azure App Service.

AutenticaciónAuthentication

Se recomienda realizar la autenticación a través de un proveedor de identidades (IDP), como Azure AD, Facebook, Google o Twitter.We recommend authenticating through an identity provider (IDP), such as Azure AD, Facebook, Google, or Twitter. Use OAuth 2 u OpenID Connect (OIDC) para el flujo de autenticación.Use OAuth 2 or OpenID Connect (OIDC) for the authentication flow. Azure AD proporciona funcionalidad para administrar usuarios y grupos, crear roles de aplicación, integrar las identidades locales y consumir servicios de back-end, como Office 365 y Skype Empresarial.Azure AD provides functionality to manage users and groups, create application roles, integrate your on-premises identities, and consume backend services such as Office 365 and Skype for Business.

Evite que la aplicación administre credenciales e inicios de sesión de usuario directamente, ya que podría crear una superficie expuesta a ataques.Avoid having the application manage user logins and credentials directly, as it creates a potential attack surface. Como mínimo, debería tener confirmación por correo electrónico, recuperación de contraseñas y autenticación multifactor; validar la seguridad de la contraseña; y almacenar hashes de contraseña de forma segura.At a minimum, you would need to have email confirmation, password recovery, and multi-factor authentication; validate password strength; and store password hashes securely. Los proveedores de identidades importantes controlan todas esas cosas por usted, y supervisan y mejoran constantemente sus prácticas de seguridad.The large identity providers handle all of those things for you, and are constantly monitoring and improving their security practices.

Considere la posibilidad de usar la autenticación de App Service para implementar el flujo de autenticación de OAUTH/OIDC.Consider using App Service authentication to implement the OAuth/OIDC authentication flow. Las ventajas de la autenticación del App Service incluyen:The benefits of App Service authentication include:

  • Es fácil de configurar.Easy to configure.
  • No se requiere ningún código para los escenarios de autenticación simples.No code is required for simple authentication scenarios.
  • Admite la autorización delegada mediante tokens de acceso de OAuth para consumir recursos en nombre del usuario.Supports delegated authorization using OAuth access tokens to consume resources on behalf of the user.
  • Proporciona una memoria caché de tokens integrada.Provides a built-in token cache.

Algunas limitaciones de la autenticación de App Service:Some limitations of App Service authentication:

  • Opciones de personalización limitadas.Limited customization options.
  • La autorización delegada está restringida a un recurso de back-end por cada sesión de inicio de sesión.Delegated authorization is restricted to one backend resource per login session.
  • Si usa más de un IDP, no hay ningún mecanismo integrado para la detección del dominio de inicio.If you use more than one IDP, there is no built-in mechanism for home realm discovery.
  • Para los escenarios multiinquilino, la aplicación debe implementar la lógica para validar el emisor del token.For multi-tenant scenarios, the application must implement the logic to validate the token issuer.

Implementación de la soluciónDeploy the solution

En github hay disponibleun ejemplo administrador de recursos plantilla para esta arquitectura.An example Resource Manager template for this architecture is available on GitHub.

Para implementar la plantilla mediante PowerShell, ejecute los siguientes comandos:To deploy the template using PowerShell, run the following commands:

New-AzureRmResourceGroup -Name <resource-group-name> -Location "West US"

$parameters = @{"appName"="<app-name>";"environment"="dev";"locationShort"="uw";"databaseName"="app-db";"administratorLogin"="<admin>";"administratorLoginPassword"="<password>"}

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateFile .\PaaS-Basic.json -TemplateParameterObject  $parameters

Para obtener más información, consulte implementación de recursos con plantillas de Azure Resource Manager.For more information, see Deploy resources with Azure Resource Manager templates.