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íteni 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 Identity-kódtár az alkalmazás futásidőben történő hitelesítéséhez használhatja őket 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.
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.
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 konfigurálja 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 az alkalmazást az IIS üzemelteti, javasoljuk, hogy alkalmazáskészletenként állítson be környezeti változókat az alkalmazások közötti beállítások elkülönítéséhez.
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
A DefaultAzureCredential a Microsoft Entra-nak való hitelesítéshez szükséges, véleményezett, rendezett folyamat. Minden hitelesítési mechanizmus a TokenCredential osztályból származó osztály, amelyet hitelesítő adatnak neveznek. Futásidőben DefaultAzureCredential
megkísérli a hitelesítést az első hitelesítő adatok használatával. Ha a hitelesítő adatok nem szereznek be hozzáférési jogkivonatot, a rendszer megkísérli a következő hitelesítő adatot a sorozatban, és így tovább, amíg egy hozzáférési jogkivonatot nem szerez be sikeresen. Ily módon az alkalmazás különböző hitelesítő adatokat használhat különböző környezetekben anélkül, hogy környezetspecifikus kódot ír.
A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential
a DefaultAzureCredential helyen találhatók.
A használathoz DefaultAzureCredential
adja hozzá az Azure.Identity-t és opcionálisan a Microsoft.Extensions.Azure-csomagokat az alkalmazáshoz:
Keresse meg az alkalmazásprojekt könyvtárát egy tetszőleges terminálon, és futtassa a következő parancsokat:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Az Azure-szolgáltatások speciális ügyfélosztályokkal érhetők el a különböző Azure SDK-ügyfélkódtárakból. Ezeket az osztályokat és a saját egyéni szolgáltatásokat regisztrálni kell, hogy függőséginjektálással elérhetők legyenek az alkalmazáson belül. Ebben Program.cs
a lépésben hajtsa végre az alábbi lépéseket egy ügyfélosztály regisztrálásához, és DefaultAzureCredential
tegye a következőket:
- Adja meg az irányelvekkel a névtereket és
Microsoft.Extensions.Azure
aAzure.Identity
névtereketusing
. - Regisztrálja az Azure-szolgáltatásügyfélt a megfelelő
Add
előtagú bővítménymetódus használatával. - Adjon át egy példányt
DefaultAzureCredential
aUseCredential
metódusnak.
Példa:
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());
});
Alternatív megoldás a UseCredential
közvetlen példányosítás DefaultAzureCredential
:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Amikor az előző kód a helyi fejlesztői munkaállomáson fut, az alkalmazásszolgáltatásnév környezeti változóiban vagy a helyileg telepített fejlesztői eszközökben(például a Visual Studióban) keresi a fejlesztői hitelesítő adatok készletét. Bármelyik módszer használható az alkalmazás Azure-erőforrásokon való hitelesítésére 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.