.NET için Azure SDK ile kimlik doğrulama
Önerilen: Azure. Identity
.NET için Azure SDK 'sindeki en son paketler, kimlik doğrulaması için ortak bir kimlik doğrulama paketi kullanır Azure.Identity . Azure.IdentityBu belgenin ilerleyen kısımlarında açıklanan diğer kimlik doğrulama mekanizmaları üzerinde kullanılması önerilir. Tarafından sunulan kimlik bilgilerini destekleyen paketler, üzerine Azure.Identity kurulmuştur Azure.Core ve Azure ile başlayan paket tanımlayıcılarına sahiptir. Kullanan paketlerin envanterini görmek için paket listesine bakın Azure.Core .
Projenizde kullanmayla ilgili tüm yönergeler için Azure.Identity bkz. .net Için Azure Identity Clientbelgeleri.
İpucu
azure kimlik, kaynak yönetimi ve azure kaynaklarını yönetmek ve bunlara erişmek için azure kimliği kullanma örnekleri için bkz. azure ıdentity, Resource Management ve Depolama sample .
Azure. Identity ' ı desteklemeyen kitaplıklarda kimlik doğrulaması yapmak için bu konunun geri kalanına bakın.
Azure kaynaklarına erişin
Key Vault bir gizli dizi alma veya Depolama blob depolama gibi azure kaynaklarıyla etkileşim kurmak için, birçok Azure hizmet kitaplığı, kimlik doğrulaması için bir bağlantı dizesi veya anahtarı gerektirir. örneğin, SQL Veritabanı standart bir SQL bağlantı dizesikullanır. Hizmet bağlantı dizeleri Cosmosdb, redin için Azure Cacheve Service Busgibi diğer Azure hizmetlerinde kullanılır. Bu dizeleri Azure portal, CLı veya PowerShell kullanarak edinebilirsiniz. Kodunuzda bağlantı dizeleri oluşturmak üzere kaynakları sorgulamak için .NET için Azure Yönetim kitaplıklarını da kullanabilirsiniz.
Bir bağlantı dizesi kullanma yöntemleri ürüne göre farklılık gösterir. Azure ürününüzün belgelerine bakın.
Azure kaynaklarını yönetme
.NET uygulamanız, .NET için Azure Yönetim kitaplıklarını kullanabilmeniz için Azure aboneliğinizdeki kaynakları okuma ve oluşturma izinlerine ihtiyaç duyuyor. Bir hizmet sorumlusu oluşturun ve bu erişime izin vermek için uygulamanızı kimlik bilgileriyle çalışacak şekilde yapılandırın. Hizmet sorumluları, yalnızca uygulamanızın çalışması için gereken ayrıcalıkları verdiğiniz kimlikle ilişkili etkileşimli olmayan bir hesap oluşturmanızı sağlar.
İlk olarak Azure Cloud Shelloturum açın. Şu anda hizmet sorumlusu 'nın oluşturulmasını istediğiniz aboneliği kullandığınızı doğrulayın.
az account show
Abonelik bilgileriniz görüntülenir.
{
"environmentName": "AzureCloud",
"id": "15dbcfa8-4b93-4c9a-881c-6189d39f04d4",
"isDefault": true,
"name": "my-subscription",
"state": "Enabled",
"tenantId": "43413cc1-5886-4711-9804-8cfea3d1c3ee",
"user": {
"cloudShellID": true,
"name": "jane@contoso.com",
"type": "user"
}
}
Doğru abonelikte oturum açmadıysanız, yazarak az account set -s <name or ID of subscription>doğru olanı seçin.
Hizmet sorumlusunu aşağıdaki komutla oluşturun:
az ad sp create-for-rbac --sdk-auth
Hizmet sorumlusu bilgileri JSON olarak görüntülenir.
{
"clientId": "b52dd125-9272-4b21-9862-0be667bdf6dc",
"clientSecret": "ebc6e170-72b2-4b6f-9de2-99410964d2d0",
"subscriptionId": "ffa52f27-be12-4cad-b1ea-c2c241b6cceb",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
JSON çıkışını kopyalayın ve daha sonra kullanmak üzere bir metin düzenleyicisine yapıştırın.
Hizmet sorumlusu oluşturulduktan sonra, kaynakları oluşturmak ve yönetmek için hizmet sorumlusunun kimliğini doğrulamak üzere iki seçenek mevcuttur.
her iki seçenek için de aşağıdaki NuGet paketlerini projenize eklemeniz gerekir.
Install-Package Microsoft.Azure.Management.Fluent
Install-Package Microsoft.Azure.Management.ResourceManager.Fluent
Belirteç kimlik bilgileriyle kimlik doğrulama
İlk yöntem, koddaki Token Credential nesnesini oluşturmak için kullanılır. Kimlik bilgilerini bir yapılandırma dosyasında, kayıt defterinde veya Azure Keykasasında güvenli bir şekilde depolamanız gerekir.
var credentials = SdkContext.AzureCredentialsFactory
.FromServicePrincipal(clientId,
clientSecret,
tenantId,
AzureEnvironment.AzureGlobalCloud);
Hizmet sorumlusunu oluştururken JSON çıktısından ClientID, ClientSecret ve tenantıd değerlerini kullanın.
Ardından, Azure API ile çalışmaya başlamak için giriş noktası nesnesini oluşturun:
var azure = Microsoft.Azure.Management.Fluent.Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();
JSON çıktısından nesnesine açıkça abonelik sağlamanız önerilir Azure :
var azure = Microsoft.Azure.Management.Fluent.Azure
.Configure()
.Authenticate(credentials)
.WithSubscription(subscriptionId);
Dosya tabanlı kimlik doğrulaması
Dosya tabanlı kimlik doğrulaması, hizmet sorumlusu kimlik bilgilerini bir düz metin dosyasına yerleştirip dosya sistemi içinde güvenli hale getirmeye olanak tanır.
Adlı azureauth.jsonbir metin dosyası oluşturun. Hizmet sorumlusunu oluştururken JSON çıkışını yapıştırın.
Bu dosyayı sisteminizde güvenli ve kodunuzun okuyabileceği bir konuma kaydedin. Dosyanın tam yolu ile adlı AZURE_AUTH_LOCATION bir ortam değişkenini ayarlamak için PowerShell kullanın, örneğin:
[Environment]::SetEnvironmentVariable("AZURE_AUTH_LOCATION", "C:\src\azureauth.json", "User")
API ile çalışmaya başlamak için dosyanın içeriğini okuyun ve giriş noktası Azure nesnesini oluşturun:
// pull in the location of the authentication properties file from the environment
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Microsoft.Azure.Management.Fluent.Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();