Megosztás a következőn keresztül:


Hitelesítés Azure-erőforrásokon a helyszínen üzemeltetett .NET-alkalmazásokból

Az Azure-on kívül (például helyszíni vagy külső adatközpontban) üzemeltetett alkalmazásoknak az Azure-erőforrások elérésekor egy alkalmazásszolgáltatás-egyszerű használatával kell hitelesítést végeznie az Azure-ban. Az alkalmazásszolgáltatás egyszerű objektumai az azure-beli alkalmazásregisztrációs folyamattal jönnek létre. Az alkalmazás-szolgáltatásnév létrehozásakor létrejön egy ügyfélazonosító és egy titkos ügyfélkód az alkalmazáshoz. Az ügyfélazonosítót, az ügyfélkulcsot és a bérlőazonosítót ezután környezeti változók tárolják, így az Azure SDK for .NET használhatja őket az alkalmazás futásidőben történő hitelesítéséhez az Azure-ban.

Minden olyan környezethez létre kell hozni egy másik alkalmazásregisztrációt, amelyben az alkalmazás üzemel. Ez lehetővé teszi a környezetspecifikus erőforrás-engedélyek konfigurálását minden egyes szolgáltatásnévhez, és győződjön meg arról, hogy egy adott környezetben üzembe helyezett alkalmazás nem beszél egy másik környezet részét képező Azure-erőforrással.

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

Egy alkalmazás regisztrálható az Azure-ban az Azure Portal vagy az Azure CLI használatával.

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.
Képernyőkép arról, hogyan keresheti meg és navigálhat a Alkalmazásregisztrációk lapra az Azure Portal felső keresősávján.
A Alkalmazásregisztrációk lapon válassza az + Új regisztráció lehetőséget. Képernyőkép az Új regisztráció gomb helyéről a Alkalmazásregisztrációk lapon.
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 és környezetét (teszt, prod) az alkalmazásregisztrációhoz.
  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.
Képernyőkép arról, hogyan töltheti ki az Alkalmazás regisztrálása lapot úgy, hogy megad egy nevet az alkalmazásnak, és megadja a támogatott fióktípusokat fiókként csak ebben a szervezeti címtárban.
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.
Képernyőkép az Alkalmazásregisztráció oldaláról az alkalmazásregisztráció befejezése után. Ez a képernyőkép az alkalmazásazonosító és a bérlőazonosító helyét mutatja be, amelyre egy későbbi lépésben szükség lesz. Azt is megjeleníti, hogy hol található a hivatkozás, ahová alkalmazáskulcsot szeretne hozzáadni az alkalmazáshoz.
A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget. Képernyőkép a hivatkozás helyéről, amellyel új titkos ügyfélkulcsot hozhat létre a tanúsítványok és titkos kódok lapon.
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.

FONTOS: Állítson be emlékeztetőt a naptárban a titkos kód lejárati dátuma előtt. Így hozzáadhat egy új titkos kulcsot, és frissítheti az alkalmazásokat a titkos kód lejárata előtt, és elkerülheti a szolgáltatás megszakítását az alkalmazásban.
Képernyőkép arról a lapról, amelyen az alkalmazásregisztrációs folyamat által létrehozott alkalmazás-szolgáltatásnévhez új ügyfélkulcsot adnak hozzá.
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.
Képernyőkép a létrehozott ügyféltitkot tartalmazó oldalról.

2 – Szerepkörök hozzárendelése az application service principalhez

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. 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 szerepköröket a szolgáltatásnévhez az erőforráscsoport hatókörében, 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.
Képernyőkép arról, hogyan használható az Azure Portal felső keresőmezője arra az erőforráscsoportra, amelyhez szerepköröket (engedélyeket) szeretne hozzárendelni.
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. Képernyőkép az erőforráscsoport oldaláról, amelyen a Hozzáférés-vezérlés (IAM) menüelem helye látható.
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.
Képernyőkép a szerepkör-hozzárendelések lapra való navigálásról, valamint a szerepkör-hozzárendelések erőforráscsoporthoz való hozzáadásához használt gomb helyéről.
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.
Képernyőkép az erőforráscsoporthoz hozzáadni kívánt szerepkör-hozzárendelések szűréséről és kiválasztásáról.
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.
Képernyőkép a választógombról, amellyel szerepkört rendelhet egy Azure AD-csoporthoz, valamint a szerepkör hozzárendeléséhez használt csoport kiválasztására szolgáló hivatkozás.
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 szolgáltatásnév első néhány karakterét a lista szűréséhez.
  2. Válassza ki az alkalmazáshoz társított szolgáltatásnevet.
A folytatáshoz válassza a Párbeszédpanel alján található Kijelölés lehetőséget.
Képernyőkép az alkalmazás Azure AD-csoportjának szűréséről és kiválasztásáról a Tagok kiválasztása párbeszédpanelen.
A szolgáltatásnév mostantól a Szerepkör-hozzárendelés hozzáadása képernyőn kijelöltként 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.
Képernyőkép a befejezett Szerepkör-hozzárendelés hozzáadása lapról, valamint a folyamat befejezéséhez használt Véleményezés + hozzárendelés gomb helyéről.

3 – Környezeti változók konfigurálása az alkalmazáshoz

Az DefaultAzureCredential objektum futásidőben a környezeti változók halmazában fogja keresni a szolgáltatásnév hitelesítő 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.

A választott megközelítéstől függetlenül a következő környezeti változókat kell konfigurálnia 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 az alkalmazást az IIS-ben üzemelteti, javasoljuk, hogy alkalmazáskészletenként állítson be környezeti változókat, hogy elkülönítse az alkalmazások közötti beállításokat.

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

Ezeket a beállításokat közvetlenül a applicationPools fájlon belüli applicationHost.config elem használatával is konfigurálhatja.

<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 – 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. A névterek és Microsoft.Extensions.Azure a Azure.Identity névterek belefoglalása egy using irányelvbe.
  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.