NET-alkalmazások hitelesítése az Azure-szolgáltatásokba a helyi fejlesztés során szolgáltatásnevek használatával

Felhőalkalmazások létrehozásakor a fejlesztőknek hibakeresést és tesztelést kell végezniük az alkalmazások helyi munkaállomásán. Ha egy alkalmazás egy fejlesztői munkaállomáson fut a helyi fejlesztés során, akkor is hitelesítenie kell az alkalmazás által használt Azure-szolgáltatásokban. Ez a cikk bemutatja, hogyan állíthat be dedikált alkalmazásszolgáltatás-egyszerű objektumokat a helyi fejlesztés során.

A diagram showing how a .NET app during local development will use the developer's credentials to connect to Azure by obtaining those credentials locally installed development tools.

A helyi fejlesztéshez szükséges dedikált alkalmazásszolgáltatás-tagok lehetővé teszik a minimális jogosultság elvét az alkalmazásfejlesztés során. Mivel az engedélyek hatóköre pontosan az alkalmazáshoz szükséges a fejlesztés során, az alkalmazáskód nem fér hozzá véletlenül egy másik alkalmazás által használni kívánt Azure-erőforráshoz. Ez azt is megakadályozza, hogy hibák lépjenek fel az alkalmazás éles környezetbe való áthelyezésekor, mert az alkalmazás túlterjedt a fejlesztői környezetben.

Amikor az alkalmazás regisztrálva van az Azure-ban, az alkalmazáshoz egy alkalmazás-szolgáltatásnév van beállítva. A helyi fejlesztésre szánt alkalmazások regisztrálásakor a következőket javasoljuk:

  • Hozzon létre külön alkalmazásregisztrációkat az alkalmazáson dolgozó minden fejlesztő számára. Ez külön alkalmazásszolgáltatás-tagokat hoz létre az egyes fejlesztők számára, hogy a helyi fejlesztés során használják, és ne kelljen a fejlesztőknek megosztanak hitelesítő adatokat egyetlen alkalmazás-szolgáltatásnévhez.
  • Alkalmazásonként külön alkalmazásregisztrációkat hozhat létre. Ez csak az alkalmazás által igényelt engedélyekre terjed ki.

A helyi fejlesztés során a környezeti változók az application service principal identitásával vannak beállítva. Az Azure SDK for NET beolvassa ezeket a környezeti változókat, és ezeket az információkat felhasználva hitelesíti az alkalmazást a szükséges Azure-erőforrásokon.

1 – Az alkalmazás regisztrálása az Azure-ban

Az alkalmazásszolgáltatás egyszerű objektumai alkalmazásregisztrációval jönnek létre az Azure-ban. Ez az Azure Portal vagy az Azure CLI használatával végezhető el.

Jelentkezzen be az Azure Portalra , és kövesse az alábbi lépéseket.

Utasítások Képernyőkép
Az Azure Portalon:
  1. Adja meg az alkalmazásregisztrációkat az Azure Portal tetején található keresősávban.
  2. A keresősáv alatt megjelenő menü Szolgáltatások fejléce alatt válassza ki a Alkalmazásregisztrációk címkével ellátott elemet.
A screenshot showing how to use the top search bar in the Azure portal to find and navigate to the App registrations page.
A Alkalmazásregisztrációk lapon válassza az + Új regisztráció lehetőséget. A screenshot showing the location of the New registration button in the App registrations page.
Az Alkalmazás regisztrálása lapon töltse ki az űrlapot az alábbiak szerint.
  1. Név → Adja meg az alkalmazásregisztráció nevét az Azure-ban. Javasoljuk, hogy ez a név tartalmazza az alkalmazás nevét, az alkalmazásregisztráció felhasználóját, és egy olyan azonosítót, mint a "dev", amely jelzi, hogy ez az alkalmazásregisztráció a helyi fejlesztéshez használható.
  2. A támogatott fióktípusok csak ebben a szervezeti címtárban → fiókokat.
Válassza a Regisztráció lehetőséget az alkalmazás regisztrálásához és az alkalmazás-szolgáltatásnév létrehozásához.
A screenshot showing how to fill out the Register an application page by giving the app a name and specifying supported account types as accounts in this organizational directory only.
Az alkalmazás alkalmazásregisztrációs oldalán:
  1. Alkalmazás (ügyfél) azonosítója → Ez az az alkalmazásazonosító, amelyet az alkalmazás a helyi fejlesztés során az Azure-hoz való hozzáféréshez használ. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mivel egy későbbi lépésben szüksége lesz rá.
  2. Címtár (bérlő) azonosítója → Az alkalmazásnak erre az értékre is szüksége lesz az Azure-ban való hitelesítéskor. Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, amely egy későbbi lépésben is szükség lesz rá.
  3. Ügyfél-hitelesítő adatok → Be kell állítania az alkalmazás ügyfél-hitelesítő adatait, mielőtt az alkalmazás hitelesítést végezhet az Azure-ban, és használhatja az Azure-szolgáltatásokat. Válassza a Tanúsítvány vagy titkos kód hozzáadása lehetőséget az alkalmazás hitelesítő adatainak hozzáadásához.
A screenshot of the App registration page after the app registration has been completed. This screenshot shows the location of the application ID and tenant ID, which will be needed in a future step. It also shows the location of the link to use to add an application secret for the app.
A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget. A screenshot showing the location of the link to use to create a new client secret on the certificates and secrets page.
Az Ügyfélkód hozzáadása párbeszédpanel a lap jobb oldalán jelenik meg. Ebben a párbeszédpanelen:
  1. Leírás → Adja meg az Aktuális értéket.
  2. Lejár → Válasszon egy 24 hónapos értéket.
Válassza a Hozzáadás lehetőséget a titkos kód hozzáadásához.
A screenshot showing the page where a new client secret is added for the application service principal create by the app registration process.
A Tanúsítványok > titkos kódok lapon megjelenik az ügyfélkód értéke.

Másolja ezt az értéket egy szövegszerkesztő ideiglenes helyére, mivel egy későbbi lépésben szüksége lesz rá.

FONTOS: Ez az egyetlen alkalom, amikor megjelenik ez az érték. A lap elhagyása vagy frissítése után ez az érték többé nem jelenik meg. Hozzáadhat egy további ügyfélkulcsot anélkül, hogy érvénytelenítenék ezt az ügyféltitkot, de ez az érték többé nem jelenik meg.
A screenshot showing the page with the generated client secret.

2 – Azure AD biztonsági csoport létrehozása helyi fejlesztéshez

Mivel egy alkalmazáson általában több fejlesztő dolgozik, javasoljuk, hogy hozzon létre egy Azure AD-csoportot, amely az alkalmazás által igényelt szerepköröket (engedélyeket) foglalja magában a helyi fejlesztésben ahelyett, hogy az egyes szolgáltatásnév-objektumokhoz rendelné a szerepköröket. Ez a következő előnyöket nyújtja.

  • Minden fejlesztőnek ugyanazok a szerepkörök lesznek hozzárendelve, mivel a szerepkörök csoportszinten vannak hozzárendelve.
  • Ha új szerepkörre van szükség az alkalmazáshoz, azt csak az alkalmazás Azure AD-csoportjához kell hozzáadni.
  • Ha egy új fejlesztő csatlakozik a csapathoz, egy új alkalmazásszolgáltatás-tag jön létre a fejlesztő számára, és hozzáadódik a csoporthoz, biztosítva, hogy a fejlesztő megfelelő engedélyekkel rendelkezik az alkalmazás használatához.
Utasítások Képernyőkép
Lépjen az Azure PortalOn az Azure Active Directory lapjára az Azure Active Directory beírásával a lap tetején lévő keresőmezőbe, majd válassza ki az Azure Active Directoryt a szolgáltatások alatt. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
Az Azure Active Directory lapon válassza a Csoportok lehetőséget a bal oldali menüben. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
A Minden csoport lapon válassza az Új csoportot. A screenshot showing the location of the New Group button in the All groups page.
Az Új csoport lapon:
  1. CsoporttípusSecurity
  2. A csoport neve → A biztonsági csoport neve, amely általában az alkalmazás nevéből jön létre. Az is hasznos, ha a csoport nevében egy helyi fejlesztéshez hasonló sztringet is felveszünk a csoport céljának jelzésére.
  3. A csoport leírása → A csoport céljának leírása.
  4. A Tagok csoportban válassza a Nem kijelölt tagok hivatkozást, ha tagokat szeretne hozzáadni a csoporthoz.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group.
A Tagok hozzáadása párbeszédpanelen:
  1. A keresőmezővel szűrheti a lista egyszerű neveit.
  2. Válassza ki az alkalmazás helyi fejlesztéséhez szükséges alkalmazásszolgáltatás-tagokat. A kijelölt objektumok szürkén jelennek meg, és a párbeszédpanel alján található Kijelölt elemek listára kerülnek.
  3. Ha végzett, válassza a Kiválasztás gombot.
A screenshot of the Add members dialog box showing how to select application service principals to be included in the group.
Az Új csoport lapon válassza a Létrehozás lehetőséget a csoport létrehozásához.

A rendszer létrehozza a csoportot, és visszavesz a Minden csoport lapra. A csoport megjelenése akár 30 másodpercet is igénybe vehet, és előfordulhat, hogy frissítenie kell az oldalt az Azure Portal gyorsítótárazása miatt.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

3 – Szerepkörök hozzárendelése az alkalmazáshoz

Ezután meg kell határoznia, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége az adott erőforrásokhoz, és ki kell osztania ezeket a szerepköröket az alkalmazáshoz. Ebben a példában a szerepkörök a 2. lépésben létrehozott Azure Active Directory-csoporthoz lesznek hozzárendelve. A szerepkörök hozzárendelhetők szerepkörökhöz egy erőforrás, erőforráscsoport vagy előfizetés hatókörében. Ez a példa bemutatja, hogyan rendelhet hozzá szerepköröket az erőforráscsoport hatóköréhez, mivel a legtöbb alkalmazás egyetlen erőforráscsoportba csoportosítja az összes Azure-erőforrást.

Utasítások Képernyőkép
Keresse meg az alkalmazás erőforráscsoportját az erőforráscsoport nevére az Azure Portal tetején található keresőmező használatával.

Lépjen az erőforráscsoportra a párbeszédpanel Erőforráscsoportok fejléce alatt található erőforráscsoport nevére kattintva.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Az erőforráscsoport oldalán válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
A Hozzáférés-vezérlés (IAM) lapon:
  1. Válassza a Szerepkiosztások lapot.
  2. Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
A Szerepkör-hozzárendelés hozzáadása lap felsorolja az erőforráscsoporthoz hozzárendelhető összes szerepkört.
  1. A keresőmezővel kezelhetőbb méretre szűrheti a listát. Ez a példa bemutatja, hogyan szűrhet a Storage Blob-szerepkörökre.
  2. Válassza ki a hozzárendelni kívánt szerepkört.
A Tovább gombra kattintva lépjen a következő képernyőre.
A screenshot showing how to filter and select role assignments to be added to the resource group.
A következő Szerepkör-hozzárendelés hozzáadása lapon megadhatja, hogy melyik felhasználóhoz rendelje hozzá a szerepkört.
  1. Válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget a Hozzáférés hozzárendelése területen.
  2. Select + Select members under Members
Megnyílik egy párbeszédpanel az Azure Portal jobb oldalán.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
A Tagok kiválasztása párbeszédpanelen:
  1. A Kijelölés szövegmezővel szűrheti az előfizetésben lévő felhasználók és csoportok listáját. Szükség esetén írja be az alkalmazáshoz létrehozott helyi fejlesztési Azure AD-csoport első néhány karakterét.
  2. Válassza ki az alkalmazáshoz társított helyi fejlesztési Azure AD-csoportot.
A folytatáshoz válassza a Párbeszédpanel alján található Kijelölés lehetőséget.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Az Azure AD-csoport mostantól a Szerepkör-hozzárendelés hozzáadása képernyőn kiválasztott módon jelenik meg.

A folyamat befejezéséhez válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a Véleményezés + hozzárendelés lehetőséget.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

4 – Alkalmazáskörnyezet változóinak beállítása

Az DefaultAzureCredential objektum futásidőben a környezeti változók egy halmazában fogja keresni a szolgáltatásnév adatait. A környezeti változók többféleképpen konfigurálhatók a .NET használata során az eszköztől és a környezettől függően.

Függetlenül attól, hogy melyik megközelítést választja, konfigurálnia kell a következő környezeti változókat egy szolgáltatásnév használatakor.

  • AZURE_CLIENT_ID → Az alkalmazásazonosító értéke.
  • AZURE_TENANT_ID → a bérlőazonosító értékét.
  • AZURE_CLIENT_SECRET → Az alkalmazáshoz létrehozott jelszó/hitelesítő adatok.

Ha helyileg dolgozik a Visual Studióval, a környezeti változók a launchsettings.json projekt mappájában lévő fájlban Properties állíthatók be. Az alkalmazás indításakor ezek az értékek automatikusan be lesznek állítva. Ne feledje, hogy ezek a konfigurációk nem utaznak az alkalmazással az üzembe helyezéskor, ezért a környezeti változókat továbbra is be kell állítania a célüzemeltetési környezetben.

"profiles": {
    "SampleProject": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7177;http://localhost:5177",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "AZURE_TENANT_ID":"11111111-1111-1111-1111-111111111111",
        "AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "AZURE_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
        "AZURE_TENANT_ID": "11111111-1111-1111-1111-111111111111",
        "AZURE_CLIENT_SECRET": "=abcdefghijklmnopqrstuvwxyz"
      }
    }
  }

5 – DefaultAzureCredential implementálása az alkalmazásban

DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza a futtatókörnyezetben használt hitelesítési módszert. Ily módon az alkalmazás különböző hitelesítési módszereket használhat különböző környezetekben, környezetspecifikus kód implementálása nélkül.

A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential a DefaultAzureCredential helyen találhatók.

A megvalósításhoz DefaultAzureCredentialelőször adja hozzá a Azure.Identity csomagokat, és igény szerint adja hozzá az Microsoft.Extensions.Azure alkalmazáshoz. Ezt a parancssor vagy a NuGet Csomagkezelő használatával teheti meg.

Nyisson meg egy tetszőleges terminálkörnyezetet az alkalmazásprojekt könyvtárában, és írja be az alábbi parancsot.

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

Az Azure-szolgáltatásokat általában az SDK megfelelő ügyfélosztályai használják. Ezeket az osztályokat és a saját egyéni szolgáltatásokat regisztrálni kell a Program.cs fájlban, hogy az alkalmazás függőséginjektálásával elérhetőek legyenek. Program.csBelül kövesse az alábbi lépéseket a szolgáltatás és a .DefaultAzureCredential

  1. Adja meg a névtereket és Microsoft.Extensions.Azure a Azure.Identity névtereket egy felhasználói utasítással.
  2. Regisztrálja az Azure-szolgáltatást a megfelelő segítő módszerek használatával.
  3. Adja át az objektum egy példányát DefaultAzureCredential a UseCredential metódusnak.

Erre példa a következő kódszakaszban látható.

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

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

Azt is megteheti, hogy a szolgáltatásokban közvetlenül, további Azure-regisztrációs módszerek nélkül is használhatja DefaultAzureCredential az alábbiakban látható módon.

using Azure.Identity;

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

Ha a fenti kód a helyi fejlesztés során fut a helyi munkaállomáson, az alkalmazás-szolgáltatásnév környezeti változóiban, illetve a Visual Studióban, a VS Code-ban, az Azure CLI-ben vagy az Azure PowerShellben fog keresni a fejlesztői hitelesítő adatok készletében, amelyek bármelyikével hitelesítheti az alkalmazást az Azure-erőforrásokban a helyi fejlesztés során.

Az Azure-ban való üzembe helyezéskor ugyanez a kód más Azure-erőforrásokon is hitelesítheti az alkalmazást. DefaultAzureCredential lekérheti a környezeti beállításokat és a felügyelt identitáskonfigurációkat a többi szolgáltatás automatikus hitelesítéséhez.