Share via


Azure tarafından barındırılan uygulama kimlik doğrulaması sorunlarını giderme

Bu makale, çeşitli TokenCredential uygulamalar aracılığıyla Azure'da barındırılan Java uygulamaları için Azure SDK'sı kimlik doğrulaması yaparken karşılaşılan sorunlarla ilgili rehberlik sağlar. Daha fazla bilgi için bkz . Azure tarafından barındırılan Java uygulamalarının kimliğini doğrulama.

DefaultAzureCredential sorunlarını giderme

kullandığınızda DefaultAzureCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." Zincirdeki DefaultAzureCredential tüm kimlik bilgileri bir belirteç alamadı ve her biri bir CredentialUnavailableExceptionoluşturamadı. Denenen kimlik bilgilerini doğrulamak ve daha fazla tanılama bilgisi almak için günlüğe kaydetmeyi etkinleştirin.

Daha fazla bilgi için aşağıdaki temel alınan kimlik bilgileri türlerinden biri için sorun giderme kılavuzuna bakın:
- EnvironmentCredential
- ManagedIdentityCredential
- VisualStudioCodeCredential
- AzureCLICredential
- AzurePowershellCredential
HttpResponseException raised from the client with a status code of 401 or 403 Kimlik doğrulaması başarılı oldu ancak yetkili Azure hizmeti 401 (Kimlik Doğrulaması) veya 403 (Yasak) durum koduyla yanıt verdi. Bu sorun genellikle, hedeflenen hesap dışındaki bir hesabın kimliğini doğruladığında veya hedeflenen hesabın atanmış doğru izinlere veya rollere sahip olmadığı durumlarda DefaultAzureCredential oluşur. Zincirdeki kimlik doğrulama belirtecini döndüren kimlik bilgilerini belirlemek için günlüğe kaydetmeyi etkinleştirin.

Beklenenden farklı bir kimlik bilgilerinin belirteç döndürmesi durumunda, ilgili geliştirme aracının oturumunu kapatarak bu sorunu atlamayı deneyin.

Kullanılan hesaba doğru rolün atandığından emin olun. Örneğin, abonelik Sahibi rolü yerine hizmete özgü bir rol.

EnvironmentCredential sorunlarını giderme

kullandığınızda EnvironmentCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
Environment variables aren't fully configured. Ortam değişkenlerinin geçerli bir bileşimi ayarlanmadı. Aşağıdaki listede açıklandığı gibi, hedeflenen kimlik doğrulama yöntemi için uygulama başlatmadan önce uygun ortam değişkenlerinin ayarlandığından emin olun:
- İstemci gizli dizisini kullanarak bir hizmet sorumlusunun kimliğini doğrulamak için , AZURE_TENANT_IDve AZURE_CLIENT_SECRET değişkenlerinin AZURE_CLIENT_IDdüzgün ayarlandığından emin olun.
- Sertifika kullanarak bir hizmet sorumlusunun kimliğini doğrulamak için , , AZURE_TENANT_IDAZURE_CLIENT_CERTIFICATE_PATHve değişkenlerinin AZURE_CLIENT_IDisteğe bağlı olarak AZURE_CLIENT_CERTIFICATE_PASSWORD düzgün ayarlandığından emin olun.
- Parola kullanarak kullanıcının kimliğini doğrulamak için değişkenlerin AZURE_USERNAME ve AZURE_PASSWORD değerlerinin düzgün ayarlandığından emin olun.

ManagedIdentityCredential sorunlarını giderme

ManagedIdentityCredential yönetilen kimlik sağlayan çeşitli Azure konaklarında çalışacak şekilde tasarlanmıştır. Yönetilen kimliği yapılandırma ve sorun giderme hataları konaktan konağa farklılık gösterir. Aşağıdaki liste, yönetilen kimlik atayabileceğiniz ve ManagedIdentityCredential destekleyen Azure konak ortamlarını gösterir:

Azure Sanal Makine Yönetilen Kimliği

kullandığınızda ManagedIdentityCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
The requested identity hasn't been assigned to this resource. Azure Örnek Meta Veri Hizmeti (I AVH) uç noktası, istenen kimliğin sanal makineye (VM) atanmadığını belirten 400 durum koduyla yanıt verdi. Kullanıcı tarafından atanan bir kimlik kullanıyorsanız, belirtilen clientId kimliğin doğru olduğundan emin olun.

Sistem tarafından atanan bir kimlik kullanıyorsanız, düzgün etkinleştirdiğinizden emin olun. Daha fazla bilgi için Azure portalını kullanarak bir VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma'nın Mevcut bir VM'de sistem tarafından atanan yönetilen kimliği etkinleştirme bölümüne bakın.
The request failed due to a gateway error. I AVH uç noktasına yapılan istek bir ağ geçidi hatası, 502 veya 504 durum kodu nedeniyle başarısız oldu. AVH ara sunucu veya ağ geçidi üzerinden yapılan çağrıları desteklemiyorum. I AVH uç noktasına yapılan çağrılar için VM'de çalışan proxy'leri veya ağ geçitlerini devre dışı bırakmahttp://169.254.169.254/
No response received from the managed identity endpoint. I AVH isteği için yanıt alınmadı veya istek zaman aşımına uğradı. - VM'de yönetilen kimliği düzgün yapılandırdığınızdan emin olun. Daha fazla bilgi için bkz . Azure portalını kullanarak VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma.
- I AVH uç noktasının VM'de erişilebilir olduğunu doğrulayın. Daha fazla bilgi için sonraki bölüme bakın.
Multiple attempts failed to obtain a token from the managed identity endpoint. I AVH uç noktasından belirteç almaya yönelik yeniden denemeler tükendi. - Belirli hatalar hakkında daha fazla bilgi için iç özel durum iletilerine bakın. Veriler kesilmişse, günlükler toplanarak daha fazla ayrıntı elde edilebilir.
- VM'de yönetilen kimliği düzgün yapılandırdığınızdan emin olun. Daha fazla bilgi için bkz . Azure portalını kullanarak VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma.
- I AVH uç noktasının VM'de erişilebilir olduğunu doğrulayın. Daha fazla bilgi için sonraki bölüme bakın.

VM'de AVH kullanılabilir olduğunu doğrulayın

VM'ye erişiminiz varsa, aşağıdaki örnekte gösterildiği gibi kullanarak komut satırı curlaracılığıyla yönetilen kimlik uç noktasının kullanılabilir olduğunu doğrulayabilirsiniz:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Uyarı

Bu komutun çıktısı geçerli bir erişim belirteci içeriyor. Hesap güvenliğinin tehlikeye atılmasını önlemek için bu erişim belirtecini paylaşmayın.

Azure App Service ve Azure İşlevleri Yönetilen Kimliği

kullandığınızda ManagedIdentityCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
ManagedIdentityCredential authentication unavailable. App Services konağı tarafından yapılandırılan ortam değişkenleri mevcut değildi. - App Service örneğinde yönetilen kimliği düzgün yapılandırdığınızdan emin olun. Daha fazla bilgi için bkz. App Service ve Azure İşlevleri için yönetilen kimlikleri kullanma.
- App Service ortamını düzgün yapılandırdığınızdan ve yönetilen kimlik uç noktasının kullanılabilir olduğundan emin olun. Daha fazla bilgi için sonraki bölüme bakın.

App Service Yönetilen Kimlik uç noktasının kullanılabilir olduğunu doğrulayın

SSH'ye App Service örneğine erişiminiz varsa, yönetilen kimliğin ortamda kullanılabilir olduğunu doğrulayabilirsiniz. İlk olarak, ortam değişkenlerini MSI_ENDPOINT ve MSI_SECRET ortamda ayarladığınızdan emin olun. Ardından, aşağıdaki örnekte gösterildiği gibi yönetilen kimlik uç noktasının kullanarak curlkullanılabilir olduğunu doğrulayabilirsiniz:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Uyarı

Bu komutun çıktısı geçerli bir erişim belirteci içeriyor. Hesap güvenliğinin tehlikeye atılmasını önlemek için bu erişim belirtecini paylaşmayın.

Azure Kubernetes Service Yönetilen Kimliği

Kubernetes için Pod Kimliği

kullandığınızda ManagedIdentityCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
No Managed Identity endpoint found Uygulama, pod'a bir kimlik atanmadan önce kimlik doğrulaması yapmaya çalıştı. Pod'un doğru etiketlendiğini doğrulayın. Bu sorun, doğru etiketli bir pod kimlik hazır olmadan önce kimlik doğrulaması gerçekleştirdiğinde de oluşur. Başlatma yarışlarını önlemek için NMI'yi yanıtlarında üst bilgiyi ayarleyecek şekilde Retry-After yapılandırın. Daha fazla bilgi için Pod Kimliği belgelerindeki NMI yanıtında Yeniden Deneme-Sonra üst bilgisini ayarlama bölümüne bakın.

WorkloadIdentityCredential sorunlarını giderme

kullandığınızda WorkloadIdentityCredential, isteğe bağlı olarak için CredentialUnavailableExceptiondeneyebilir/yakalayabilirsiniz. Aşağıdaki tabloda, bu özel durumun gösterdiği hatalar ve azaltma yöntemleri gösterilmektedir:

Hata iletisi Açıklama Risk azaltma
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. WorkloadIdentityCredentialclientId, tenantId ve tokenFilePath microsoft Entra id ile kimlik doğrulaması gerektirir. kullanıyorsanız DefaultAzureCredential:
- İstemci kimliğinin ayarlayıcı veya ortam değişkeni aracılığıyla workloadIdentityClientId belirtildiğinden AZURE_CLIENT_ID emin olun.
- Kiracı kimliğinin ortam değişkeni aracılığıyla belirtildiğinden AZURE_TENANT_ID emin olun.
- Ortam değişkeni aracılığıyla belirteç dosyası yolunu belirttiğinizden AZURE_FEDERATED_TOKEN_FILE emin olun.
- Yetkili konağın ortam değişkeni aracılığıyla belirtildiğinden AZURE_AUTHORITY_HOST emin olun.

kullanıyorsanız WorkloadIdentityCredential:
- Kiracı kimliğinin kimlik bilgisi oluşturucusunun tenantId veya ortam değişkeninin ayarlayıcısı aracılığıyla belirtildiğinden AZURE_TENANT_ID emin olun.
- İstemci kimliğinin kimlik bilgisi oluşturucusu clientId veya ortam değişkeni üzerindeki ayarlayıcı aracılığıyla belirtildiğinden AZURE_CLIENT_ID emin olun.
- Belirteç dosyası yolunun kimlik bilgisi oluşturucusu tokenFilePath veya ortam değişkeni üzerindeki ayarlayıcı aracılığıyla belirtildiğinden AZURE_FEDERATED_TOKEN_FILE emin olun.
- Diğer sorunlar için ürün sorun giderme kılavuzuna bakın.

Sonraki adımlar

Bu makaledeki sorun giderme kılavuzu Java istemci kitaplıkları için Azure SDK'sını kullanırken karşılaşılan sorunları çözmeye yardımcı olmazsa, Java github için Azure SDK deposunda bir sorun bildirmenizi öneririz.