Azure tarafından barındırılan Java uygulamalarının kimliğini doğrulama

Bu makalede, Azure Kimlik kitaplığının Azure'da barındırılan uygulamalar için Microsoft Entra belirteci kimlik doğrulamasını nasıl desteklediği açıklanmaktadır. Bu destek, bu makalede ele alınan bir dizi TokenCredential uygulama aracılığıyla mümkün hale getirilir.

Bu makale aşağıdaki konuları kapsar:

Azure tarafından barındırılan uygulamalarla ilgili kimlik doğrulama sorunlarını gidermek için bkz . Azure'da barındırılan uygulama kimlik doğrulaması sorunlarını giderme.

Varsayılan Azure kimlik bilgileri

DefaultAzureCredential , uygulamanın sonunda Azure Bulut'ta çalıştığı çoğu senaryo için uygundur. DefaultAzureCredential dağıtıldığında kimlik doğrulaması için yaygın olarak kullanılan kimlik bilgilerini bir geliştirme ortamında kimlik doğrulaması için kullanılan kimlik bilgileriyle birleştirir. DefaultAzureCredential aşağıdaki mekanizmalar aracılığıyla sırayla kimlik doğrulaması yapmaya çalışır:

DefaultAzureCredential authentication flow

  • Ortam - DefaultAzureCredential Ortam değişkenleri aracılığıyla belirtilen hesap bilgilerini okur ve kimlik doğrulaması için kullanır.
  • Yönetilen Kimlik - Uygulama Yönetilen Kimlik etkin bir Azure konağına dağıtılırsa, DefaultAzureCredential bu hesapla kimlik doğrulaması yapar.
  • IntelliJ - Azure Toolkit for IntelliJ aracılığıyla kimlik doğrulaması yaptıysanız bu DefaultAzureCredential hesapla kimlik doğrulaması yapar.
  • Visual Studio Code - Visual Studio Code Azure Hesabı eklentisi aracılığıyla kimlik doğrulaması yaptıysanız, DefaultAzureCredential bu hesapla kimlik doğrulaması yapar.
  • Azure CLI - Azure CLI az login komutuyla bir hesabın kimliğini doğruladıysanız, DefaultAzureCredential bu hesapla kimlik doğrulaması yapar.

DefaultAzureCredential'ı yapılandırma

DefaultAzureCredential veya ortam değişkenlerinde ayarlayıcılar aracılığıyla bir dizi yapılandırmayı DefaultAzureCredentialBuilder destekler.

  • Ortam değişkenlerinde tanımlandığı gibi , AZURE_CLIENT_SECRETve AZURE_TENANT_ID ortam değişkenlerini AZURE_CLIENT_ID ayarlamak, değerler tarafından belirtilen hizmet sorumlusu olarak kimlik doğrulaması yapmak için yapılandırılırDefaultAzureCredential.
  • .managedIdentityClientId(String) Oluşturucu veya ortam değişkeni AZURE_CLIENT_ID ayarı, kullanıcı tanımlı yönetilen kimlik olarak kimlik doğrulaması yapmak için yapılandırırkenDefaultAzureCredential, boş bırakıldığında sistem tarafından atanan yönetilen kimlik olarak kimlik doğrulaması için yapılandırılır.
  • .tenantId(String) Oluşturucu veya ortam değişkeni AZURE_TENANT_ID ayarı, paylaşılan belirteç önbelleği, Visual Studio Code ve IntelliJ IDEA için belirli bir kiracıda kimlik doğrulaması yapmak üzere yapılandırılırDefaultAzureCredential.
  • Ortam değişkeninin AZURE_USERNAME ayarlanması, paylaşılan belirteç önbelleğinden karşılık gelen önbelleğe alınmış belirteci seçecek şekilde yapılandırır DefaultAzureCredential .
  • Oluşturucuda ayarı .intelliJKeePassDatabasePath(String) , IntelliJ kimlik bilgileriyle kimlik doğrulaması yaparken belirli bir KeePass dosyasını okuyacak şekilde yapılandırılır DefaultAzureCredential .

DefaultAzureCredential ile kimlik doğrulaması

Aşağıdaki örnekte kullanarak DefaultAzureCredentialazure-security-keyvault-secrets istemci kitaplığından kimlik doğrulaması SecretClient gösterilmektedir.

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

DefaultAzureCredential ile kullanıcı tarafından atanan yönetilen kimliğin kimliğini doğrulama

Aşağıdaki örnek, kullanıcı tarafından atanan yönetilen kimliğin yapılandırıldığı bir Azure kaynağına dağıtılan azure-security-keyvault-secrets istemci kitaplığından DefaultAzureCredentialkimliğini doğrulamayı gösterirSecretClient.

/**
 * The default credential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<managed identity client ID>")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(defaultCredential)
  .buildClient();

DefaultAzureCredential ile IntelliJ için Azure Toolkit'te kullanıcının kimliğini doğrulama

Aşağıdaki örnekte, IntelliJ IDEA'nın yüklü olduğu ve kullanıcının IntelliJ için Azure Toolkit'te bir Azure hesabıyla oturum açtığı bir iş istasyonunda kullanarak azure-security-keyvault-secrets istemci kitaplığından DefaultAzureCredentialkimlik doğrulaması SecretClient gösterilmektedir.

IntelliJ IDEA'nızı yapılandırma hakkında daha fazla bilgi için bkz . IntelliJCredential için IntelliJ için Azure Toolkit'te oturum açma.

/**
 * The default credential uses the KeePass database path to find the user account in IntelliJ on Windows.
 */
// KeePass configuration is required only for Windows. No configuration needed for Linux / Mac.
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .intelliJKeePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(defaultCredential)
  .buildClient();

Yönetilen Kimlik kimlik bilgileri

Yönetilen Kimlik, bir Azure kaynağının yönetilen kimliğinin (sistem veya kullanıcı tarafından atanan) kimliğini doğrular. Bu nedenle, uygulama , uç noktaları veya her ikisi aracılığıyla IDENTITY/MSIIMDS Yönetilen Kimliği destekleyen bir Azure kaynağı içinde çalışıyorsa, bu kimlik bilgisi uygulamanızın kimliğini doğrular ve harika bir gizli kimlik doğrulaması deneyimi sunar.

Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nedir?.

Yönetilen kimlikle Azure'da kimlik doğrulaması

Aşağıdaki örnek, azure-security-keyvault-secrets istemci kitaplığından sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliğin etkinleştirildiği, Azure'daki bir sanal makine, uygulama hizmeti, işlev uygulaması, Cloud Shell, service fabric, arc veya AKS ortamını kullanarak ManagedIdentityCredential kimlik doğrulamasını SecretClient gösterir.

/**
 * Authenticate with a managed identity.
 */
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
  .clientId("<user-assigned managed identity client ID>") // required only for user-assigned
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(managedIdentityCredential)
  .buildClient();

Ortam değişkenleri

Ve'yi EnvironmentCredential ortam değişkenleriyle yapılandırabilirsinizDefaultAzureCredential. Her kimlik doğrulama türü belirli değişkenler için değerler gerektirir:

Gizli dizili hizmet sorumlusu

Değişken adı Değer
AZURE_CLIENT_ID Microsoft Entra uygulamasının kimliği.
AZURE_TENANT_ID Uygulamanın Microsoft Entra kiracısının kimliği.
AZURE_CLIENT_SECRET Uygulamanın istemci gizli dizilerinden biri.

Sertifika ile hizmet sorumlusu

Değişken adı Değer
AZURE_CLIENT_ID Microsoft Entra uygulamasının kimliği.
AZURE_TENANT_ID Uygulamanın Microsoft Entra kiracısının kimliği.
AZURE_CLIENT_CERTIFICATE_PATH Özel anahtar da dahil olmak üzere PEM ile kodlanmış bir sertifika dosyasının yolu (parola koruması olmadan).

Kullanıcı adı ve parola

Değişken adı Değer
AZURE_CLIENT_ID Microsoft Entra uygulamasının kimliği.
AZURE_USERNAME Kullanıcı adı (genellikle bir e-posta adresi).
AZURE_PASSWORD Verilen kullanıcı adı için ilişkili parola.

Yapılandırma bu sırada denendi. Örneğin, hem istemci gizli dizisi hem de sertifika değerleri varsa, istemci gizli dizisi kullanılır.

Sonraki adımlar

Bu makalede Azure'da barındırılan uygulamalar için kimlik doğrulaması ele alınmıştır. Bu kimlik doğrulama biçimi, Java için Azure SDK'da kimlik doğrulaması yapmanın birden çok yoludur. Aşağıdaki makalelerde diğer yollar açıklanmaktadır:

Azure tarafından barındırılan uygulama kimlik doğrulamasıyla ilgili sorunlarla karşılaşırsanız bkz . Azure'da barındırılan uygulama kimlik doğrulaması sorunlarını giderme.

Kimlik doğrulamasında ustalaşdıktan sonra, SDK tarafından sağlanan günlük işlevselliği hakkında bilgi için bkz . Java için Azure SDK'da günlüğe kaydetmeyi yapılandırma.