Základní webové aplikaceBasic web application

Tato referenční architektura ukazuje sadu osvědčených postupů pro webovou aplikaci, která používá služby Azure App Service a Azure SQL Database.This reference architecture shows a set of proven practices for a web application that uses Azure App Service and Azure SQL Database. Nasaďte toto řešení.Deploy this solution.

00

Stáhněte si soubor aplikace Visio s touto architekturou.Download a Visio file of this architecture.

ArchitekturaArchitecture

Poznámka

Tato architektura se nezaměřuje na vývoj aplikací a nepředpokládá žádnou konkrétní architekturu aplikace.This architecture does not focus on application development, and does not assume any particular application framework. Cílem je pochopit, jak se k sobě různé služby Azure hodí.The goal is to understand how various Azure services fit together.

Tato architektura se skládá z následujících komponent:The architecture has the following components:

  • Skupina prostředků.Resource group. Skupina prostředků je logický kontejner prostředků Azure.A resource group is a logical container for Azure resources.

  • Aplikace služby App Service.App Service app. Služba Azure App Service je plně spravovaná platforma pro vytváření a nasazování cloudových aplikací.Azure App Service is a fully managed platform for creating and deploying cloud applications.

  • Plán služby App Service.App Service plan. Plán služby App Service poskytuje spravované virtuální počítače hostující vaši aplikaci.An App Service plan provides the managed virtual machines (VMs) that host your app. Veškeré aplikace související s plánem se spouštějí ve stejných instancích virtuálního počítače.All apps associated with a plan run on the same VM instances.

  • Sloty nasazení.Deployment slots. Slot nasazení vám umožní připravit nasazení a pak ho prohodit s produkčním nasazením.A deployment slot lets you stage a deployment and then swap it with the production deployment. Vyhnete se tak nasazování přímo do produkčního prostředí.That way, you avoid deploying directly into production. Konkrétní doporučení najdete v části týkající se správy.See the Manageability section for specific recommendations.

  • IP adresa.IP address. Aplikace služby App Service má veřejnou IP adresu a název domény.The App Service app has a public IP address and a domain name. Název domény je subdoména azurewebsites.net, jako například contoso.azurewebsites.net.The domain name is a subdomain of azurewebsites.net, such as contoso.azurewebsites.net.

  • Azure DNS.Azure DNS. Azure DNS je hostitelská služba určená pro domény DNS a zajišťuje překlad názvů s využitím infrastruktury Microsoft Azure.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Pokud svoje domény hostujete v Azure, můžete spravovat svoje DNS záznamy pomocí stejných přihlašovacích údajů, rozhraní API a nástrojů a za stejných fakturačních podmínek jako u ostatních služeb 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. Pokud chcete použít vlastní název domény (například contoso.com), vytvořte záznamy DNS, které mapují vlastní název domény na IP adresu.To use a custom domain name (such as contoso.com) create DNS records that map the custom domain name to the IP address. Další informace naleznete v tématu Konfigurace vlastního názvu domény ve službě Azure App Service.For more information, see Configure a custom domain name in Azure App Service.

  • Azure SQL Database.Azure SQL Database. SQL Database je relační databáze jako služba v cloudu.SQL Database is a relational database-as-a-service in the cloud. SQL Database sdílí základ kódu s databázovým strojem Microsoft SQL Server.SQL Database shares its code base with the Microsoft SQL Server database engine. V závislosti na požadavcích vaší aplikace můžete také použít – Azure Database for MySQL nebo – Azure Database for PostgreSQL.Depending on your application requirements, you can also use Azure Database for MySQL or Azure Database for PostgreSQL. Toto jsou plně spravovaných databázových služeb podle opensourcový MySQL Server a Postgres databázových strojů, v uvedeném pořadí.These are fully managed database services, based on the open source MySQL Server and Postgres database engines, respectively.

  • Logický server.Logical server. Logický server ve službě Azure SQL Database hostuje vaše databáze.In Azure SQL Database, a logical server hosts your databases. V rámci logického serveru můžete vytvořit více databází.You can create multiple databases per logical server.

  • Azure StorageAzure Storage. Vytvořte účet Azure Storage s kontejnerem objektů blob pro ukládání diagnostických protokolů.Create an Azure storage account with a blob container to store diagnostic logs.

  • Azure Active Directory (Azure AD).Azure Active Directory (Azure AD). Použijte službu Azure AD nebo jiného zprostředkovatele identit pro ověřování.Use Azure AD or another identity provider for authentication.

DoporučeníRecommendations

Vaše požadavky se mohou od popsané architektury lišit.Your requirements might differ from the architecture described here. Jako výchozí bod použijte doporučení uvedená v této části.Use the recommendations in this section as a starting point.

Plán služby App ServiceApp Service plan

Používejte úrovně Standard nebo Premium, protože podporují horizontální navýšení kapacity, automatické škálování a protokol SSL (Secure Sockets Layer).Use the Standard or Premium tiers, because they support scale out, autoscale, and secure sockets layer (SSL). Každá úroveň podporuje několik velikostí instancí lišících se počtem jader a pamětí.Each tier supports several instance sizes that differ by number of cores and memory. Úroveň nebo velikost instance můžete změnit po vytvoření plánu.You can change the tier or instance size after you create a plan. Další informace o plánech služby App Service najdete v tématu Ceny služby App Service.For more information about App Service plans, see App Service Pricing.

Instance v plánu služby App Service vám budou účtovány i v případě, kdy je aplikace pozastavená.You are charged for the instances in the App Service plan, even if the app is stopped. Dbejte na to, abyste odstranili plány, které nepoužíváte (například testovací nasazení).Make sure to delete plans that you aren't using (for example, test deployments).

SQL DatabaseSQL Database

Použijte verzi V12 služby SQL Database.Use the V12 version of SQL Database. Služba SQL Database podporuje úrovně služeb Basic, Standard a Premium s několika úrovněmi výkonu v jednotlivých vrstvách měřenými v jednotkách transakcí databáze (DTU).SQL Database supports Basic, Standard, and Premium service tiers, with multiple performance levels within each tier measured in Database Transaction Units (DTUs). Naplánujte kapacitu a vyberte úroveň a úroveň výkonu odpovídající vašim požadavkům.Perform capacity planning and choose a tier and performance level that meets your requirements.

OblastRegion

Plán služby App Service a službu SQL Database zřiďte ve stejné oblasti, abyste minimalizovali latenci sítě.Provision the App Service plan and the SQL Database in the same region to minimize network latency. Vyberte oblast, která je vašim uživatelům nejbližší.Generally, choose the region closest to your users.

Skupina prostředků má také oblast, která určuje to, kam se ukládají metadata nasazení.The resource group also has a region, which specifies where deployment metadata is stored. Skupinu prostředků a její prostředky umístěte do stejné oblasti.Put the resource group and its resources in the same region. Zlepšíte tím dostupnost během nasazení.This can improve availability during deployment.

Aspekty zabezpečeníScalability considerations

Hlavní výhodou služby Azure App Service je schopnost škálovat aplikaci podle zatížení.A major benefit of Azure App Service is the ability to scale your application based on load. Tady jsou některé aspekty, které byste měli mít na paměti při plánování škálování vaší aplikace.Here are some considerations to keep in mind when planning to scale your application.

Škálování aplikace služby App ServiceScaling the App Service app

Existují dva způsoby, jak můžete aplikaci služby App Service škálovat:There are two ways to scale an App Service app:

  • Vertikální navýšení kapacity, což je změna velikosti instance.Scale up, which means changing the instance size. Velikost instance určuje paměť, počet jader a úložiště každé instance virtuálního počítače.The instance size determines the memory, number of cores, and storage on each VM instance. Kapacitu můžete vertikálně navýšit ručně tak, že změníte velikost instance nebo úroveň plánu.You can scale up manually by changing the instance size or the plan tier.

  • Horizontální navýšení kapacity, což je přidání instancí pro zvládnutí zvýšeného zatížení.Scale out, which means adding instances to handle increased load. Každá cenová úroveň má maximální počet instancí.Each pricing tier has a maximum number of instances.

    Kapacitu můžete horizontálně navýšit ručně tak, že změníte počet instancí, nebo použijete automatické škálování, aby služba Azure automaticky přidávala nebo odebírala instance na základě plánu nebo metriky výkonu.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. Každá operace škálování proběhne rychle, obvykle během několika sekund.Each scale operation happens quickly—typically within seconds.

    Pokud chcete povolit automatické škálování, vytvořte profil automatického škálování, který definuje minimální a maximální počet instancí.To enable autoscaling, create an autoscale profile that defines the minimum and maximum number of instances. Profily můžete naplánovat.Profiles can be scheduled. Můžete například vytvořit samostatné profily pro pracovní dny a víkendy.For example, you might create separate profiles for weekdays and weekends. Profil může volitelně obsahovat pravidla týkající se toho, kdy se mají instance přidávat a odebírat.Optionally, a profile contains rules for when to add or remove instances. (Příklad: Přidejte dvě instance, pokud je využití procesoru po dobu 5 minut vyšší než 70 %.)(Example: Add two instances if CPU usage is above 70% for 5 minutes.)

Doporučení pro škálování webové aplikace:Recommendations for scaling a web app:

  • Snažte se co možná nejvíce vyhnout vertikálnímu zvyšování a snižování kapacity, protože může aktivovat restartování aplikace.As much as possible, avoid scaling up and down, because it may trigger an application restart. Místo toho vyberte úroveň a velikost, které odpovídají vašim požadavkům na výkon při obvyklém zatížení, a potom horizontálně navyšujte kapacitu instancí, abyste dokázali zvládnout změny objemu provozu.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.
  • Povolte automatické škálování.Enable autoscaling. Pokud má vaše aplikace předvídatelné a pravidelné zatížení, vytvořte profily, ve kterých předem naplánujete počet instancí.If your application has a predictable, regular workload, create profiles to schedule the instance counts ahead of time. Pokud zatížení nelze předvídat, reagujte na změny zatížení při jejich výskytu pomocí automatického škálování založeného na pravidlech.If the workload is not predictable, use rule-based autoscaling to react to changes in load as they occur. Oba přístupy můžete kombinovat.You can combine both approaches.
  • Dobrou metrikou pro pravidla automatického škálování je obvykle využití procesoru.CPU usage is generally a good metric for autoscale rules. Nicméně byste měli provést také zátěžový test aplikace, identifikovat potenciální problémová místa a na těchto datech pak založit pravidla automatického škálování.However, you should load test your application, identify potential bottlenecks, and base your autoscale rules on that data.
  • Pravidla automatického škálování zahrnují dobu chladnutí, což je interval čekání po dokončení jedné akce škálování a před zahájením nové akce škálování.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. Doba chladnutí umožní, aby se systém před dalším škálováním stabilizoval.The cool-down period lets the system stabilize before scaling again. Pro přidávání instancí nastavte kratší dobu chladnutí a pro odebírání instancí nastavte dobu chladnutí delší.Set a shorter cool-down period for adding instances, and a longer cool-down period for removing instances. Můžete například nastavit 5 minut pro přidání instance, ale 60 minut pro odebrání instance.For example, set 5 minutes to add an instance, but 60 minutes to remove an instance. Je lepší v případě velkého zatížení přidat rychle nové instance, aby se zvládnul další provoz, a pak postupně škálovat zpět.It's better to add new instances quickly under heavy load to handle the additional traffic, and then gradually scale back.

Škálování služby SQL DatabaseScaling SQL Database

Pokud potřebujete vyšší úroveň služby nebo úroveň výkonu služby SQL Database, můžete vertikálně navýšit kapacitu jednotlivých databází bez výpadku aplikace.If you need a higher service tier or performance level for SQL Database, you can scale up individual databases with no application downtime. Další informace najdete v tématu Možnosti a výkon služby SQL Database: Co je dostupné v jednotlivých úrovních služby.For more information, see SQL Database options and performance: Understand what's available in each service tier.

Aspekty dostupnostiAvailability considerations

V době psaní tohoto článku zaručuje smlouva o úrovni služeb (SLA) pro službu App Service dostupnost 99,95 % a smlouva SLA pro službu SQL Database dostupnost 99,99 % pro úrovně Basic, Standard a 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.

Poznámka

SLA služby App Service platí pro jednu i více instancí.The App Service SLA applies to both single and multiple instances.

ZálohováníBackups

V případě ztráty dat poskytuje služba SQL Database obnovení k určitému bodu v čase a geografické obnovení.In the event of data loss, SQL Database provides point-in-time restore and geo-restore. Tyto funkce jsou dostupné ve všech úrovních a jsou povolené automaticky.These features are available in all tiers and are automatically enabled. Zálohy nemusíte plánovat ani spravovat.You don't need to schedule or manage the backups.

Další informace najdete v tématu Cloudová provozní kontinuita a zotavení po havárii databáze se službou SQL Database.For more information, see Cloud business continuity and database disaster recovery with SQL Database.

Služba App Service poskytuje funkci zálohování a obnovení souborů aplikace.App Service provides a backup and restore feature for your application files. Mějte ale na paměti, že zálohované soubory obsahují nastavení aplikace v prostém textu a že mohou zahrnovat tajné kódy, jako jsou například připojovací řetězce.However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Nepoužívejte funkci zálohování služby App Service pro zálohování databází SQL, protože databázi exportuje do souboru SQL .bacpac a spotřebuje jednotky 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. Raději použijte obnovení k určitému bodu v čase služby SQL Database popsané výše.Instead, use SQL Database point-in-time restore described above.

Aspekty správyManageability considerations

Vytvořit samostatné skupiny prostředků pro produkční prostředí, vývoje a testovacích prostředí.Create separate resource groups for production, development, and test environments. Usnadníte tak správu nasazení, odstranění nasazení v testovacím prostředí a přiřazení přístupových práv.This makes it easier to manage deployments, delete test deployments, and assign access rights.

Při přiřazování prostředků skupinám prostředků zvažte následující:When assigning resources to resource groups, consider the following:

  • Životní cyklus.Lifecycle. Prostředky se stejným životním cyklem umístěte do stejné skupiny prostředků.In general, put resources with the same lifecycle into the same resource group.
  • Přístup.Access. Můžete použít řízení přístupu na základě role a použít zásady přístupu na prostředky ve skupině.You can use role-based access control (RBAC) to apply access policies to the resources in a group.
  • Fakturace.Billing. Můžete zobrazit souhrnné náklady na skupinu prostředků.You can view the rolled-up costs for the resource group.

Další informace naleznete v tématu Přehled Azure Resource Manager.For more information, see Azure Resource Manager overview.

NasazeníDeployment

Nasazení zahrnuje dva kroky:Deployment involves two steps:

  1. Zřízení prostředků služby Azure.Provisioning the Azure resources. Doporučujeme, abyste použili [šablon Azure Resource Manageru] arm-template pro tento krok.We recommend that you use Azure Resource Manager templates for this step. Šablony usnadňují automatizaci nasazení prostřednictvím PowerShellu nebo rozhraní příkazového řádku Azure.Templates make it easier to automate deployments via PowerShell or the Azure command line interface (CLI).
  2. Nasazení aplikace (kód, binární soubory a soubory obsahu).Deploying the application (code, binaries, and content files). Máte několik možností, včetně nasazení z místního úložiště Git, použití sady Visual Studio nebo průběžného nasazování z cloudové správy zdrojového kódu.You have several options, including deploying from a local Git repository, using Visual Studio, or continuous deployment from cloud-based source control. Viz Nasazení aplikace do Azure App Service.See Deploy your app to Azure App Service.

Aplikace služby App Service má vždy jeden slot nasazení s názvem production, který představuje živý provozní web.An App Service app always has one deployment slot named production, which represents the live production site. Doporučujeme vytvořit přípravný slot pro nasazování aktualizací.We recommend creating a staging slot for deploying updates. Mezi výhody použití přípravného slotu patří:The benefits of using a staging slot include:

  • Před přepnutím do produkčního prostředí můžete ověřit úspěšnost nasazení.You can verify the deployment succeeded, before swapping it into production.
  • Nasazení do přípravného slotu zajistí, že se všechny instance před přepnutím do produkčního prostředí zahřejí.Deploying to a staging slot ensures that all instances are warmed up before being swapped into production. Mnoho aplikací mají významný zahřívání a počáteční čas.Many applications have a significant warmup and cold-start time.

Doporučujeme také vytvořit třetí slot pro uložení posledního známého úspěšného nasazení.We also recommend creating a third slot to hold the last-known-good deployment. Po prohození pracovního a produkčního prostředí přesuňte předchozí produkční nasazení (nyní pracovní) do slotu posledního známého úspěšného nasazení.After you swap staging and production, move the previous production deployment (which is now in staging) into the last-known-good slot. To vám zajistí, abyste se mohli později při zjištění problému rychle vrátit k poslední známé úspěšné verzi.That way, if you discover a problem later, you can quickly revert to the last-known-good version.

11

Pokud se vrátíte k předchozí verzi, ujistěte se, že jsou jakékoli změny schématu databáze zpětně kompatibilní.If you revert to a previous version, make sure any database schema changes are backward compatible.

Sloty produkčního nasazení nepoužívejte pro testování, protože všechny aplikace v rámci jednoho plánu služby App Service sdílejí stejné instance virtuálních počítačů.Don't use slots on your production deployment for testing because all apps within the same App Service plan share the same VM instances. Zátěžových testů může například dojít ke snížení živý provozní Web.For example, load tests might degrade the live production site. Místo toho pro produkci a testování vytvořte odlišné plány služby App Service.Instead, create separate App Service plans for production and test. Vložením testovací nasazení do samostatného plánu je izolovaná od produkční verzi.By putting test deployments into a separate plan, you isolate them from the production version.

KonfiguraceConfiguration

Nastavení konfigurace uložte jako nastavení aplikace.Store configuration settings as app settings. Nastavení aplikace definujte v šablonách Resource Manageru nebo pomocí PowerShellu.Define the app settings in your Resource Manager templates, or using PowerShell. V době běhu jsou nastavení aplikace dostupná pro aplikaci jako proměnné prostředí.At runtime, app settings are available to the application as environment variables.

Nikdy nezapisujte hesla, přístupové klíče nebo připojovací řetězce do správy zdrojového kódu.Never check passwords, access keys, or connection strings into source control. Místo toho je předávejte jako parametry skriptu nasazení, který tyto hodnoty ukládá jako nastavení aplikace.Instead, pass these as parameters to a deployment script that stores these values as app settings.

Když přepnete slot nasazení, nastavení aplikace se ve výchozím nastavení přepnou.When you swap a deployment slot, the app settings are swapped by default. Pokud pro produkci a přípravu potřebujete různá nastavení, můžete vytvořit nastavení aplikace, která zůstanou slotu a nebudou se přepínat.If you need different settings for production and staging, you can create app settings that stick to a slot and don't get swapped.

Diagnostika a monitorováníDiagnostics and monitoring

Povolte protokolování diagnostiky, včetně protokolování aplikace a protokolování webového serveru.Enable diagnostics logging, including application logging and web server logging. Nakonfigurujte protokolování tak, aby používalo službu Blog Storage.Configure logging to use Blob storage. Kvůli výkonu vytvořte samostatný účet úložiště pro diagnostické protokoly.For performance reasons, create a separate storage account for diagnostic logs. Nepoužívejte stejný účet úložiště pro protokoly a data aplikací.Don't use the same storage account for logs and application data. Podrobnější pokyny týkající se protokolování najdete v tématu Pokyny k monitorování a diagnostice.For more detailed guidance on logging, see Monitoring and diagnostics guidance.

Pomocí služby, jako je například New Relic nebo Application Insights, monitorujte výkon a chování při zatížení.Use a service such as New Relic or Application Insights to monitor application performance and behavior under load. Mějte na paměti omezení přenosové rychlosti dat pro službu Application Insights.Be aware of the data rate limits for Application Insights.

Proveďte zátěžový test pomocí nástroje, jako například [Azure DevOps] azure-devops nebo Visual Studio Team Foundation Server.Perform load testing, using a tool such as Azure DevOps or Visual Studio Team Foundation Server. Obecný přehled analýzy výkonu v cloudových aplikacích najdete v tématu Základy analýzy výkonu.For a general overview of performance analysis in cloud applications, see Performance Analysis Primer.

Tipy pro řešení potíží s aplikací:Tips for troubleshooting your application:

Aspekty zabezpečeníSecurity considerations

Tato část obsahuje důležité informace o zabezpečení, které jsou specifické pro služby Azure popsané v tomto článku.This section lists security considerations that are specific to the Azure services described in this article. Nejedná se o úplný seznam osvědčených postupů zabezpečení.It's not a complete list of security best practices. Některé další důležité informace o zabezpečení najdete v části Zabezpečení aplikace ve službě Azure App Service.For some additional security considerations, see Secure an app in Azure App Service.

Auditování služby SQL DatabaseSQL Database auditing

Auditování pomáhá zajistit dodržování předpisů a získat přehled o nesrovnalostech a nepravidelnostech, které můžou značit problémy obchodního charakteru nebo vzbuzovat podezření na narušení zabezpečení.Auditing can help you maintain regulatory compliance and get insight into discrepancies and irregularities that could indicate business concerns or suspected security violations. Přečtěte si článek Začínáme s auditem SQL Database.See Get started with SQL database auditing.

Nasazovací slotyDeployment slots

Každý slot nasazení má veřejnou IP adresu.Each deployment slot has a public IP address. Neprodukční sloty zabezpečte pomocí přihlášení služby Azure Active Directory, aby ke koncovým bodům měli přístup pouze členové vývojového týmu a týmu DevOps.Secure the nonproduction slots using Azure Active Directory login so that only members of your development and DevOps teams can reach those endpoints.

ProtokolováníLogging

Protokoly by nikdy neměly zaznamenávat hesla uživatelů nebo jiné informace, které se dají zneužít k podvodům s identitami.Logs should never record users' passwords or other information that might be used to commit identity fraud. Projděte si tyto podrobnosti dat, než je uložíte.Scrub those details from the data before storing it.

SSLSSL

Aplikace služby App Service zahrnuje bez dalších poplatků koncový bod SSL a subdoménu azurewebsites.net.An App Service app includes an SSL endpoint on a subdomain of azurewebsites.net at no additional cost. Koncový bod SSL obsahuje certifikát se zástupnými znaky pro doménu *.azurewebsites.net.The SSL endpoint includes a wildcard certificate for the *.azurewebsites.net domain. Pokud používáte vlastní název domény, musíte poskytnout certifikát, který odpovídá vlastní doméně.If you use a custom domain name, you must provide a certificate that matches the custom domain. Nejjednodušším způsobem je koupit certifikát přímo prostřednictvím portálu Azure Portal.The simplest approach is to buy a certificate directly through the Azure portal. Certifikáty také můžete naimportovat z jiných certifikačních autorit.You can also import certificates from other certificate authorities. Další informace najdete v článku Koupě a konfigurace certifikátu SSL pro službu Azure App Service.For more information, see Buy and Configure an SSL Certificate for your Azure App Service.

Osvědčeným postupem zabezpečení aplikace by mělo být vynucení protokolu HTTPS prostřednictvím přesměrovávání požadavků HTTP.As a security best practice, your app should enforce HTTPS by redirecting HTTP requests. Toto chování můžete implementovat do své aplikace nebo můžete použít pravidlo pro přepis adres URL, jak je popsáno v článku Povolení HTTPS pro aplikaci ve službě 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.

AuthenticationAuthentication

Doporučujeme ověřování prostřednictvím zprostředkovatele identit (IDP), jako je například Azure AD, Facebook, Google nebo Twitter.We recommend authenticating through an identity provider (IDP), such as Azure AD, Facebook, Google, or Twitter. Pro tok ověřování použijte OAuth 2 nebo OpenID Connect (OIDC).Use OAuth 2 or OpenID Connect (OIDC) for the authentication flow. Azure AD poskytuje funkce pro správu uživatelů a skupin, tvorbu aplikačních rolí, integraci místních identit a využívání back-endových služeb, jako je Office 365 a Skype pro firmy.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.

Nepoužívejte aplikaci k přímé správě uživatelských přihlášení a přihlašovacích údajů, protože vytváří potenciální prostor pro útok.Avoid having the application manage user logins and credentials directly, as it creates a potential attack surface. Potřebovali byste mít alespoň potvrzení e-mailu, obnovení hesla a vícefaktorové ověřování, ověřit sílu hesla a bezpečně uložit hodnoty hash hesel.At a minimum, you would need to have email confirmation, password recovery, and multi-factor authentication; validate password strength; and store password hashes securely. Velcí zprostředkovatelé identit řeší všechny tyto věci za vás a neustále monitorují a vylepšují své bezpečnostní postupy.The large identity providers handle all of those things for you, and are constantly monitoring and improving their security practices.

Zvažte použití ověřování pomocí služby App Service, abyste mohli implementovat tok ověřování OAuth/OIDC.Consider using App Service authentication to implement the OAuth/OIDC authentication flow. Mezi výhody ověřování pomocí služby App Service patří:The benefits of App Service authentication include:

  • Snadno se konfiguruje.Easy to configure.
  • Pro jednoduché scénáře ověřování se nevyžaduje kód.No code is required for simple authentication scenarios.
  • Podporuje delegovanou autorizaci pomocí přístupového tokenu OAuth pro využívání prostředků jménem uživatele.Supports delegated authorization using OAuth access tokens to consume resources on behalf of the user.
  • Poskytuje integrovanou mezipaměť tokenu.Provides a built-in token cache.

Toto jsou některá omezení ověřování pomocí služby App Service:Some limitations of App Service authentication:

  • Má omezené možnosti vlastního nastavení.Limited customization options.
  • Delegovaná autorizace je omezena na jeden back-endový prostředek na relaci přihlášení.Delegated authorization is restricted to one backend resource per login session.
  • Pokud používáte více bodů IDP, neexistuje žádný předdefinovaný mechanismus pro zjišťování domovské sféry.If you use more than one IDP, there is no built-in mechanism for home realm discovery.
  • U scénářů s více tenanty musí aplikace implementovat logiku pro ověření vydavatele tokenu.For multi-tenant scenarios, the application must implement the logic to validate the token issuer.

Nasazení řešeníDeploy the solution

Šablona Resource Manageru příklad pro tuto architekturu je k dispozici na Githubu.An example Resource Manager template for this architecture is available on GitHub.

Pokud chcete nasadit šablonu pomocí PowerShellu, spusťte následující příkazy: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

Další informace najdete v článku Nasazení prostředků pomocí šablon Azure Resource Manageru.For more information, see Deploy resources with Azure Resource Manager templates.