Sdílet prostřednictvím


Ověřování prostředků Azure z aplikací .NET hostovaných místně

Aplikace hostované mimo Azure (například místně nebo v datacentru třetí strany) by měly při přístupu k prostředkům Azure používat instanční objekt aplikace k ověřování v Azure. Objekty instančního objektu aplikace se vytvářejí pomocí procesu registrace aplikace v Azure. Po vytvoření instančního objektu aplikace se pro vaši aplikaci vygeneruje ID klienta a tajný klíč klienta. ID klienta, tajný klíč klienta a ID vašeho tenanta se pak ukládají do proměnných prostředí, aby je knihovna identit Azure mohl použít k ověření vaší aplikace v Azure za běhu.

Pro každé prostředí, ve které je aplikace hostovaná, by se měla vytvořit jiná registrace aplikace. To umožňuje nakonfigurovat pro každý instanční objekt specifická oprávnění prostředí a zajistit, aby aplikace nasazená do jednoho prostředí nemluvila s prostředky Azure, které jsou součástí jiného prostředí.

1. Registrace aplikace v Azure

Aplikaci je možné zaregistrovat v Azure pomocí webu Azure Portal nebo Azure CLI.

Přihlaste se k webu Azure Portal a postupujte podle těchto kroků.

Pokyny Snímek obrazovky
Na webu Azure Portal:
  1. Na panelu hledání v horní části webu Azure Portal zadejte registrace aplikací.
  2. Vyberte položku označenou Registrace aplikací pod nadpisem Služby v nabídce, která se zobrazí pod panelem hledání.
Snímek obrazovky znázorňující, jak pomocí horního panelu hledání na webu Azure Portal najít a přejít na Registrace aplikací stránku
Na stránce Registrace aplikací vyberte + Nová registrace. Snímek obrazovky znázorňující umístění tlačítka Nová registrace na stránce Registrace aplikací
Na stránce Zaregistrovat aplikaci vyplňte formulář následujícím způsobem:
  1. Název → Zadejte název registrace aplikace v Azure. Tento název se doporučuje zahrnout název aplikace a prostředí (test, prod), pro které je registrace aplikace určená.
  2. Podporované typy účtů → Účty pouze v tomto organizačním adresáři.
Vyberte Zaregistrovat a zaregistrujte aplikaci a vytvořte instanční objekt aplikace.
Snímek obrazovky znázorňující, jak vyplnit stránku Registrace aplikace tak, že aplikaci pojmenujete a zadáte podporované typy účtů jako účty pouze v tomto organizačním adresáři.
Na stránce Registrace aplikace pro vaši aplikaci:
  1. ID aplikace (klienta) → Toto je ID aplikace, které bude aplikace používat pro přístup k Azure během místního vývoje. Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.
  2. ID adresáře (tenanta) → Tuto hodnotu bude vaše aplikace potřebovat také při ověřování v Azure. Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, bude ji také potřeba v dalším kroku.
  3. Přihlašovací údaje klienta → Před ověřením aplikace v Azure a používáním služeb Azure musíte pro aplikaci nastavit přihlašovací údaje klienta. Vyberte Přidat certifikát nebo tajný klíč a přidejte přihlašovací údaje pro vaši aplikaci.
Snímek obrazovky se stránkou registrace aplikace po dokončení registrace aplikace Tento snímek obrazovky ukazuje umístění ID aplikace a ID tenanta, které bude potřeba v dalším kroku. Zobrazuje také umístění odkazu, které se má použít k přidání tajného kódu aplikace pro aplikaci.
Na stránce Certifikáty a tajné kódy vyberte + Nový tajný klíč klienta. Snímek obrazovky znázorňující umístění odkazu, které se má použít k vytvoření nového tajného klíče klienta na stránce certifikátů a tajných kódů
Dialogové okno Pro přidání tajného klíče klienta se zobrazí na pravé straně stránky. V tomto dialogovém okně:
  1. Popis → Zadejte hodnotu Current.
  2. Vyprší → Vyberte hodnotu 24 měsíců.
Chcete-li přidat tajný kód, vyberte Přidat .

DŮLEŽITÉ: Nastavte připomenutí v kalendáři před datem vypršení platnosti tajného kódu. Tímto způsobem můžete před vypršením platnosti tohoto tajného kódu přidat nový tajný kód a aktualizovat aplikace a vyhnout se přerušení služby ve vaší aplikaci.
Snímek obrazovky zobrazující stránku, kde se přidá nový tajný klíč klienta pro instanční objekt aplikace vytvořený procesem registrace aplikace
Na stránce Certifikáty a tajné kódy se zobrazí hodnota tajného klíče klienta.

Tuto hodnotu zkopírujte do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.

DŮLEŽITÉ: Toto je jediný čas, kdy uvidíte tuto hodnotu. Po opuštění nebo aktualizaci této stránky už tuto hodnotu neuvidíte. Můžete přidat další tajný klíč klienta bez zneplatnění tohoto tajného klíče klienta, ale tuto hodnotu znovu neuvidíte.
Snímek obrazovky zobrazující stránku s vygenerovaným tajným kódem klienta

2. Přiřazení rolí k instančnímu objektu aplikace

Dále musíte určit, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřadit tyto role k aplikaci. Role je možné přiřadit roli v oboru prostředku, skupiny prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role instančního objektu v oboru skupiny prostředků, protože většina aplikací seskupuje všechny prostředky Azure do jedné skupiny prostředků.

Pokyny Snímek obrazovky
Vyhledejte skupinu prostředků vaší aplikace vyhledáním názvu skupiny prostředků pomocí vyhledávacího pole v horní části webu Azure Portal.

Přejděte do skupiny prostředků tak, že v dialogovém okně vyberete název skupiny prostředků pod nadpisem Skupiny prostředků.
Snímek obrazovky znázorňující, jak pomocí horního vyhledávacího pole na webu Azure Portal vyhledat a přejít do skupiny prostředků, ke které chcete přiřadit role (oprávnění).
Na stránce skupiny prostředků v nabídce vlevo vyberte Řízení přístupu (IAM ). Snímek obrazovky se stránkou skupiny prostředků zobrazující umístění položky nabídky Řízení přístupu (IAM).
Na stránce Řízení přístupu (IAM):
  1. Vyberte kartu Přiřazení rolí.
  2. V horní nabídce vyberte + Přidat a potom přidejte přiřazení role z výsledné rozevírací nabídky.
Snímek obrazovky znázorňující, jak přejít na kartu Přiřazení rolí a umístění tlačítka použitého k přidání přiřazení rolí do skupiny prostředků
Na stránce Přidat přiřazení role jsou uvedeny všechny role, které je možné přiřadit skupině prostředků.
  1. Pomocí vyhledávacího pole vyfiltrujte seznam na lépe spravovatelnou velikost. Tento příklad ukazuje, jak filtrovat role objektů blob služby Storage.
  2. Vyberte roli, kterou chcete přiřadit.
Výběrem možnosti Další přejdete na další obrazovku.
Snímek obrazovky znázorňující, jak filtrovat a vybrat přiřazení rolí, která se mají přidat do skupiny prostředků
Další stránka Přidat přiřazení role umožňuje určit, k jakému uživateli se má role přiřadit.
  1. V části Přiřadit přístup vyberte Uživatele, skupinu nebo instanční objekt.
  2. Vyberte a vyberte členy v části Členové.
Na pravé straně webu Azure Portal se otevře dialogové okno.
Snímek obrazovky znázorňující přepínač pro výběr přiřazení role ke skupině Microsoft Entra a odkaz použitý k výběru skupiny pro přiřazení role
V dialogovém okně Vybrat členy :
  1. Textové pole Vybrat lze použít k filtrování seznamu uživatelů a skupin ve vašem předplatném. V případě potřeby zadejte několik prvních znaků instančního objektu, který jste vytvořili pro aplikaci pro filtrování seznamu.
  2. Vyberte instanční objekt přidružený k vaší aplikaci.
Pokračujte výběrem možnosti Vybrat v dolní části dialogového okna.
Snímek obrazovky znázorňující, jak filtrovat a vybrat skupinu Microsoft Entra pro aplikaci v dialogovém okně Vybrat členy
Instanční objekt se teď zobrazí jako vybraný na obrazovce Přidat přiřazení role.

Výběrem možnosti Zkontrolovat a přiřadit přejděte na poslední stránku a pak proces dokončete opětovnou kontrolou a přiřazením .
Snímek obrazovky zobrazující dokončenou stránku Přidat přiřazení role a umístění tlačítka Zkontrolovat a přiřadit použité k dokončení procesu

3. Konfigurace proměnných prostředí pro aplikaci

Objekt DefaultAzureCredential vyhledá přihlašovací údaje instančního objektu v sadě proměnných prostředí za běhu. Při práci s .NET existují různé způsoby konfigurace proměnných prostředí v závislosti na nástrojích a prostředí.

Bez ohledu na to, který přístup zvolíte, nakonfigurujte při práci s instančním objektem následující proměnné prostředí:

  • AZURE_CLIENT_ID → hodnota ID aplikace.
  • AZURE_TENANT_ID → hodnota ID tenanta.
  • AZURE_CLIENT_SECRET → heslo nebo přihlašovací údaje vygenerované pro aplikaci.

Pokud je vaše aplikace hostovaná ve službě IIS, doporučuje se nastavit proměnné prostředí na fond aplikací a izolovat nastavení mezi aplikacemi.

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='ASPNETCORE_ENVIRONMENT',value='Production']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_ID',value='00000000-0000-0000-0000-000000000000']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_TENANT_ID',value='11111111-1111-1111-1111-111111111111']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].environmentVariables.[name='AZURE_CLIENT_SECRET',value='=abcdefghijklmnopqrstuvwxyz']" /commit:apphost

Tato nastavení můžete také nakonfigurovat přímo pomocí elementu applicationPools applicationHost.config uvnitř souboru:

<applicationPools>
   <add name="CorePool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic">
      <environmentVariables>
         <add name="ASPNETCORE_ENVIRONMENT" value="Development" />
         <add name="AZURE_CLIENT_ID" value="00000000-0000-0000-0000-000000000000" />
         <add name="AZURE_TENANT_ID" value="11111111-1111-1111-1111-111111111111" />
         <add name="AZURE_CLIENT_SECRET" value="=abcdefghijklmnopqrstuvwxyz" />
      </environmentVariables>
   </add>
</applicationPools>

4. Implementace defaultAzureCredential ve vaší aplikaci

DefaultAzureCredential je názorná a uspořádaná posloupnost mechanismů pro ověřování v Microsoft Entra. Každý mechanismus ověřování je třída odvozená z TokenCredential třídy a je známá jako přihlašovací údaje. Za běhu DefaultAzureCredential se pokusí ověřit pomocí prvních přihlašovacích údajů. Pokud se tento přihlašovací údaj nepodaří získat přístupový token, pokusí se další přihlašovací údaje v této sekvenci atd., dokud se přístupový token úspěšně nezíská. Aplikace tak může používat různé přihlašovací údaje v různých prostředích bez psaní kódu specifického pro prostředí.

Pořadí a umístění, ve kterých DefaultAzureCredential se hledají přihlašovací údaje, najdete na adrese DefaultAzureCredential.

Pokud chcete použít DefaultAzureCredential, přidejte do své aplikace balíčky Azure.Identity a volitelně balíčky Microsoft.Extensions.Azure :

V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkazy:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Ke službám Azure se přistupuje pomocí specializovaných klientských tříd z různých klientských knihoven Azure SDK. Tyto třídy a vlastní služby by se měly zaregistrovat, aby k nim bylo možné přistupovat prostřednictvím injektáže závislostí v celé aplikaci. V Program.csnásledujícím postupu zaregistrujte třídu klienta a DefaultAzureCredential:

  1. Zahrňte direktivy Azure.Identity a Microsoft.Extensions.Azure obory názvů prostřednictvím using direktiv.
  2. Zaregistrujte klienta služby Azure pomocí odpovídající Addmetody rozšíření s předponou.
  3. Předejte instanci DefaultAzureCredential metody UseCredential .

Příklad:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Alternativou UseCredential je vytvoření instance DefaultAzureCredential přímo:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Když předchozí kód běží na místní vývojové pracovní stanici, hledá v proměnných prostředí instanční objekt aplikace nebo v místně nainstalovaných vývojářských nástrojích, jako je Visual Studio, pro sadu přihlašovacích údajů vývojáře. K ověření aplikace v prostředcích Azure se dá použít některý z přístupů během místního vývoje.

Při nasazení do Azure může stejný kód také ověřit vaši aplikaci v jiných prostředcích Azure. DefaultAzureCredential může načíst nastavení prostředí a konfigurace spravovaných identit pro automatické ověřování v jiných službách.