Şirket içinde barındırılan .NET uygulamalarından Azure kaynaklarında kimlik doğrulaması
Azure dışında barındırılan uygulamalar (örneğin, şirket içinde veya üçüncü taraf veri merkezinde), Azure kaynaklarına erişirken Azure'da kimlik doğrulaması yapmak için bir uygulama hizmet sorumlusu kullanmalıdır. Uygulama hizmeti sorumlusu nesneleri, Azure'da uygulama kayıt işlemi kullanılarak oluşturulur. Uygulama hizmet sorumlusu oluşturulduğunda, uygulamanız için bir istemci kimliği ve istemci gizli dizisi oluşturulur. İstemci kimliği, istemci gizli anahtarı ve kiracı kimliğiniz daha sonra ortam değişkenlerinde depolanır, böylece azure kimlik kitaplığı tarafından uygulamanızın çalışma zamanında Azure'da kimliğini doğrulamak için kullanılabilir.
Uygulamanın barındırılacağı her ortam için farklı bir uygulama kaydı oluşturulmalıdır. Bu, her hizmet sorumlusu için ortama özgü kaynak izinlerinin yapılandırılmasına olanak tanır ve bir ortama dağıtılan bir uygulamanın başka bir ortamın parçası olan Azure kaynaklarıyla konuşmadığından emin olun.
1 - Uygulamayı Azure'a kaydetme
Bir uygulama Azure portalı veya Azure CLI kullanılarak Azure'a kaydedilebilir.
Azure portalında oturum açın ve şu adımları izleyin.
2 - Uygulama hizmet sorumlusuna rol atama
Ardından, uygulamanızın hangi kaynaklar üzerinde hangi rollere (izinlere) ihtiyacı olduğunu belirlemeniz ve bu rolleri uygulamanıza atamanız gerekir. Rollere kaynak, kaynak grubu veya abonelik kapsamında bir rol atanabilir. Bu örnekte, çoğu uygulama tüm Azure kaynaklarını tek bir kaynak grubunda gruplandırdığından kaynak grubu kapsamında hizmet sorumlusu için rollerin nasıl atandığı gösterilmektedir.
3 - Uygulama için ortam değişkenlerini yapılandırma
nesnesi çalışma DefaultAzureCredential
zamanında bir dizi ortam değişkeninde hizmet sorumlusu kimlik bilgilerini arar. Araçlarınıza ve ortamınıza bağlı olarak .NET ile çalışırken ortam değişkenlerini yapılandırmanın birden çok yolu vardır.
Hangi yaklaşımı seçerseniz seçin, hizmet sorumlusuyla çalışırken aşağıdaki ortam değişkenlerini yapılandırın:
AZURE_CLIENT_ID
Uygulama kimliği değerini →.AZURE_TENANT_ID
kiracı kimliği değerini →.AZURE_CLIENT_SECRET
→ Uygulama için oluşturulan parola/kimlik bilgisi.
Uygulamanız IIS'de barındırılıyorsa, uygulamalar arasındaki ayarları yalıtmak için uygulama havuzu başına ortam değişkenleri ayarlamanız önerilir.
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
Bu ayarları doğrudan dosyanın içindeki applicationHost.config
öğesini kullanarak applicationPools
da yapılandırabilirsiniz:
<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 - Uygulamanızda DefaultAzureCredential uygulama
DefaultAzureCredential , Microsoft Entra'da kimlik doğrulaması yapmak için düşünceli, sıralı bir mekanizma dizisidir. Her kimlik doğrulama mekanizması TokenCredential sınıfından türetilen bir sınıftır ve kimlik bilgisi olarak bilinir. Çalışma zamanında, DefaultAzureCredential
ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.
Kimlik bilgilerinin arandığı DefaultAzureCredential
sıra ve konumlar DefaultAzureCredential konumunda bulunur.
kullanmak DefaultAzureCredential
için Azure.Identity ve isteğe bağlı olarak Microsoft.Extensions.Azure paketlerini uygulamanıza ekleyin:
Seçtiğiniz bir terminalde uygulama projesi dizinine gidin ve aşağıdaki komutları çalıştırın:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel istemci sınıfları kullanılarak erişilir. Bu sınıflar ve kendi özel hizmetleriniz, uygulamanıza bağımlılık ekleme yoluyla erişilebilmeleri için kaydedilmelidir. içinde Program.cs
, bir istemci sınıfını ve DefaultAzureCredential
kaydetmek için aşağıdaki adımları tamamlayın:
Azure.Identity
yönergeleri aracılığıylausing
veMicrosoft.Extensions.Azure
ad alanlarını ekleyin.- İlgili
Add
ön ekli uzantı yöntemini kullanarak Azure hizmet istemcisini kaydedin. - yönteminin
DefaultAzureCredential
bir örneğiniUseCredential
geçirin.
Örneğin:
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());
});
Bunun bir alternatifi UseCredential
de doğrudan örnekleme DefaultAzureCredential
yapmaktır:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Yukarıdaki kod yerel geliştirme iş istasyonunuzda çalıştırıldığında, bir uygulama hizmet sorumlusunun ortam değişkenlerinde veya bir dizi geliştirici kimlik bilgisi için Visual Studio gibi yerel olarak yüklenen geliştirici araçlarında arar. Her iki yaklaşım da yerel geliştirme sırasında azure kaynaklarında uygulamanın kimliğini doğrulamak için kullanılabilir.
Azure'a dağıtıldığında, aynı kod uygulamanızın kimliğini diğer Azure kaynaklarda da doğrulayabilir. DefaultAzureCredential
diğer hizmetlerde otomatik olarak kimlik doğrulaması yapmak için ortam ayarlarını ve yönetilen kimlik yapılandırmalarını alabilir.