Sdílet prostřednictvím


Ověřování aplikací C++ ve službách Azure během místního vývoje pomocí vývojářských účtů

Během místního vývoje se aplikace musí ověřit v Azure, aby používaly různé služby Azure. Místní ověřování pomocí jednoho z těchto přístupů:

Tento článek vysvětluje, jak se ověřit pomocí vývojářského účtu pomocí nástrojů podporovaných knihovnou identit Azure. V dalších částech se dozvíte:

  • Jak používat skupiny Microsoft Entra k efektivní správě oprávnění pro více vývojářských účtů
  • Jak přiřadit role vývojářským účtům pro vymezení oprávnění.
  • Jak se přihlásit k podporovaným místním vývojovým nástrojům
  • Jak ověřit pomocí vývojářského účtu z kódu vaší aplikace

Podporované vývojářské nástroje pro ověřování

Aby se aplikace při místním vývoji ověřila v Azure pomocí přihlašovacích údajů Azure vývojáře, musí být vývojář přihlášený k Azure pomocí Azure CLI.

Knihovna identit Azure dokáže zjistit, že vývojář je z nástroje přihlášený. Knihovna pak může získat přístupový token Microsoft Entra prostřednictvím nástroje k ověření aplikace v Azure jako přihlášený uživatel.

Tento přístup využívá stávající účty Azure vývojáře ke zjednodušení procesu ověřování. Účet vývojáře ale pravděpodobně má více oprávnění, než vyžaduje aplikace, a proto překračuje oprávnění, která aplikace běží v produkčním prostředí. Jako alternativu můžete vytvořit instanční objekty aplikace, které se použijí při místním vývoji, což může být vymezeno tak, aby měly přístup potřebný jenom pro aplikaci.

Vytvoření skupiny Microsoft Entra pro místní vývoj

Vytvořte skupinu Microsoft Entra, která zapouzdří role (oprávnění), jež aplikace potřebuje pro místní vývoj, spíše než přiřazovat role jednotlivým služebním hlavním objektům. Tento přístup nabízí následující výhody:

  • Každý vývojář má stejné role přiřazené na úrovni skupiny.
  • Pokud je pro aplikaci potřeba nová role, stačí ji přidat jenom do skupiny aplikace.
  • Pokud se nový vývojář připojí k týmu, vytvoří se nový instanční objekt aplikace pro vývojáře a přidá se do skupiny, aby vývojář získal správná oprávnění pro práci s aplikací.
  1. V Azure portálu přejděte na stránku přehledu Microsoft Entra ID.

  2. V nabídce vlevo vyberte Všechny skupiny .

  3. Na stránce Skupiny vyberte Nová skupina.

  4. Na stránce Nová skupina vyplňte následující pole formuláře:

    • Typ skupiny: Vyberte zabezpečení.
    • Název skupiny: Zadejte název skupiny, která obsahuje odkaz na název aplikace nebo prostředí.
    • Popis skupiny: Zadejte popis, který vysvětluje účel skupiny.

    Snímek obrazovky znázorňující, jak vytvořit skupinu na webu Azure Portal

  5. Vyberte odkaz Nejsou vybráni žádní členové v části Členové, abyste přidali členy do skupiny.

  6. V rozbalovacím panelu, který se otevře, vyhledejte aplikační objekt služby, který jste vytvořili dříve, a vyberte ho z filtrovaných výsledků. Výběrem tlačítka Vybrat v dolní části panelu potvrďte výběr.

  7. Výběrem možnosti Vytvořit v dolní části stránky Nová skupina vytvořte skupinu a vraťte se na stránku Všechny skupiny . Pokud novou skupinu nevidíte, chvíli počkejte a aktualizujte stránku.

Přiřazení rolí ke skupině

Dále určete, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřaďte tyto role skupině Microsoft Entra, kterou jste vytvořili. Skupinám lze přiřadit roli v rámci prostředku, skupiny prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože většina aplikací seskupuje všechny prostředky Azure do jedné skupiny prostředků.

  1. Na webu Azure Portal přejděte na stránku Přehled skupiny prostředků, která obsahuje vaši aplikaci.

  2. V levém navigačním panelu vyberte řízení přístupu (IAM).

  3. Na stránce Řízení přístupu (IAM) vyberte + Přidat a pak v rozevírací nabídce zvolte Přidat přiřazení role . Stránka Přidat přiřazení role poskytuje několik záložek pro konfiguraci a přiřazení rolí.

  4. Na kartě Role vyhledejte roli, kterou chcete přiřadit, pomocí vyhledávacího pole. Vyberte roli a pak zvolte Další.

  5. Na kartě Členové :

    • V části Přiřadit přístup k hodnotě vyberte Uživatel, skupina nebo instanční objekt .
    • Pro hodnotu Členové zvolte + Vybrat členy , aby se otevřel informační panel Vybrat členy .
    • Vyhledejte skupinu Microsoft Entra, kterou jste vytvořili dříve, a vyberte ji z filtrovaných výsledků. Výběrem možnosti Vybrat vyberte skupinu a zavřete informační panel.
    • V dolní části karty Členové vyberte Zkontrolovat a přiřadit.

    Snímek obrazovky znázorňující, jak přiřadit roli ke skupině Microsoft Entra

  6. Na kartě Revize a Přiřazení vyberte Revize a Přiřazení v dolní části stránky.

Přihlášení k Azure pomocí vývojářských nástrojů

Přihlaste se k Azure pomocí některého z několika vývojářských nástrojů, které se dají použít k ověřování ve vašem vývojovém prostředí. Účet, který ověříte, by měl existovat také ve skupině Microsoft Entra, kterou jste vytvořili a nakonfigurovali dříve.

Azure CLI (příkazový řádek nástroje Azure)

Vývojáři můžou k ověření použít Azure CLI . Aplikace používající DefaultAzureCredential nebo AzureCliCredential pak můžou tento účet použít k ověřování žádostí o aplikace.

Pokud se chcete ověřit pomocí Azure CLI, spusťte az login příkaz. V systému s výchozím webovým prohlížečem azure CLI spustí prohlížeč pro ověření uživatele.

az login

Pro systémy bez výchozího webového prohlížeče používá příkaz az login tok ověřování kódu zařízení. Uživatel může také vynutit, aby azure CLI používalo tok kódu zařízení místo spuštění prohlížeče zadáním argumentu --use-device-code.

az login --use-device-code

Ověřování ve službách Azure z vaší aplikace

Knihovna identit Azure pro C++ poskytuje různé přihlašovací údaje přizpůsobené podpoře různých scénářů a toků ověřování Microsoft Entra. Následující kroky ukazují, jak používat DefaultAzureCredential při práci s uživatelskými účty místně.

Implementace kódu

Třída DefaultAzureCredential je posloupnost seřazených mechanismů pro ověřování do Microsoft Entra ID. Každý mechanismus ověřování je třída odvozená z TokenCredential třídy a je známá jako přihlašovací údaje. V tomto scénáři postupně kontroluje, DefaultAzureCredential jestli se vývojář přihlásil k Azure pomocí Azure CLI. Pokud je vývojář přihlášený k Azure CLI, použije aplikace přihlašovací údaje použité k přihlášení k nástroji k ověření v Azure. Další informace o přizpůsobení řetězu přihlašovacích údajů naleznete v tématu Jak přizpůsobit DefaultAzureCredential.

  1. Přidejte do aplikace balíček azure-identity-cpp pomocí vcpkg.

    vcpkg add port azure-identity-cpp
    
  2. Do souboru CMake přidejte následující řádky:

    find_package(azure-identity-cpp CONFIG REQUIRED)
    target_link_libraries(<your project name> PRIVATE Azure::azure-identity)
    
  3. Pro jakýkoli kód jazyka C++, který ve vaší aplikaci vytvoří objekt klienta sady Azure SDK, chcete:

    1. Zahrňte azure/identity.hpp záhlaví.

    2. Použijte DefaultAzureCredential nebo AzureCliCredential k vytvoření instance přihlašovacích údajů. Například:

      • Pokud chcete použít DefaultAzureCredential, nastavte proměnnou AZURE_TOKEN_CREDENTIALS prostředí tak, aby dev značí, že aplikace běží ve vývojovém prostředí. Další informace naleznete v tématu Jak přizpůsobit DefaultAzureCredential.

        // Environment variable AZURE_TOKEN_CREDENTIALS=dev
        auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);
        
      • Nebo použijte AzureCliCredential pro vždy použití přihlášeného uživatele Azure CLI k ověření.

        auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
        
    3. Předejte instanci DefaultAzureCredential nebo AzureCliCredential konstruktoru klienta sady Azure SDK.

    Příklad těchto kroků je znázorněn v následujícím segmentu kódu. V příkladu se vytvoří klient objektů blob služby Azure Storage s použitím DefaultAzureCredential pro připojení k Azure.

    #include <azure/identity.hpp>
    #include <azure/storage/blobs.hpp>
    #include <iostream>
    #include <memory>
    
    int main() {
        try {
            // DefaultAzureCredential supports dev, test, and prod environments.
            // See documentation for details on customizing the credential chain:
            // https://learn.microsoft.com/azure/developer/cpp/sdk/authentication/credential-chains#defaultazurecredential-overview
            // In production, it's better to use a specific credential type so authentication is more predictable and easier to debug.
            // Here DefaultAzureCredential is used for local development and environment variable AZURE_TOKEN_CREDENTIALS=dev
    
            auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);
    
            // Or use AzureCliCredential to always use the Azure CLI signed-in user to authenticate
            // auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
    
            // Create a client for the specified storage account
            std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/";
            Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential);
    
            // Get a reference to a container
            std::string containerName = "sample-container";
            auto containerClient = blobServiceClient.GetBlobContainerClient(containerName);
    
            // TODO: perform some action with the blob client
            // auto blobClient = containerClient.GetBlobClient("sample-blob");
            // auto downloadResult = blobClient.DownloadTo("path/to/local/file");
    
        } catch (const std::exception& ex) {
            std::cout << "Exception: " << ex.what() << std::endl;
            return 1;
        }
    
        return 0;
    }