Ş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çi 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 uygulamanızın çalışma zamanında Azure'da kimliğini doğrulamak için .NET için Azure SDK'sı tarafından 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 atanacağı gösterilir.
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, bir hizmet sorumlusuyla çalışırken aşağıdaki ortam değişkenlerini yapılandırmanız gerekir.
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 - Uygulamada DefaultAzureCredential uygulama
DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında kullanılan kimlik doğrulama yöntemini belirler. Bu şekilde uygulamanız, ortama özgü kod uygulamadan farklı ortamlarda farklı kimlik doğrulama yöntemleri kullanabilir.
Kimlik bilgilerinin arandığı DefaultAzureCredential
sıra ve konumlar DefaultAzureCredential konumunda bulunur.
uygulamasını uygulamak DefaultAzureCredential
için önce ve isteğe bağlı olarak Microsoft.Extensions.Azure
paketlerini uygulamanıza ekleyinAzure.Identity
. Bunu komut satırını veya NuGet Paket Yöneticisi kullanarak yapabilirsiniz.
Uygulama projesi dizininde tercihinize göre bir terminal ortamı açın ve aşağıdaki komutu girin.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure hizmetlerine genellikle SDK'dan karşılık gelen 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 dosyaya kaydedilmelidir Program.cs
. Program.cs
içinde, ve hizmetinizi DefaultAzureCredential
doğru şekilde ayarlamak için aşağıdaki adımları izleyin.
Azure.Identity
veMicrosoft.Extensions.Azure
ad alanlarını using deyimine ekleyin.- İlgili yardımcı yöntemleri kullanarak Azure hizmetini kaydedin.
- yöntemine nesnesinin
DefaultAzureCredential
bir örneğiniUseCredential
geçirin.
Bunun bir örneği aşağıdaki kod kesiminde gösterilmiştir.
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());
});
Alternatif olarak, aşağıda görüldüğü gibi ek Azure kayıt yöntemlerinin yardımı olmadan hizmetlerinizde daha doğrudan kullanabilirsiniz DefaultAzureCredential
.
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()));
Yukarıdaki kod yerel geliştirme sırasında yerel iş istasyonunuzda çalıştırıldığında, yerel geliştirme sırasında uygulamanın Kimliğini Azure kaynaklarına doğrulamak için kullanılabilen bir geliştirici kimlik bilgileri kümesi için bir uygulama hizmet sorumlusunun veya Visual Studio, VS Code, Azure CLI veya Azure PowerShell'in ortam değişkenlerine bakar.
Azure'a dağıtıldığında bu 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin