Aracılığıyla paylaş


Azure Identity kimlik doğrulaması sorunlarını giderme

Bu makale hata araştırma tekniklerini, Azure Identity Java istemci kitaplığındaki kimlik bilgisi türleri için yaygın hataları ve bu hataları düzeltmeye yönelik azaltma adımlarını kapsar. Java için Azure SDK'da kullanılabilen birçok kimlik bilgisi türü olduğundan, sorun giderme kılavuzunu kullanım senaryosuna göre bölümlere ayırdık. Aşağıdaki bölümler kullanılabilir:

Bu makalenin geri kalanı, tüm kimlik bilgileri türleri için geçerli olan genel sorun giderme tekniklerini ve yönergelerini kapsar.

Azure Kimlik özel durumlarını işleme

Sorun gidermeye genel bakışınJava için Azure SDK'sında özel durum işleme bölümünde belirtildiği gibi, Java için Azure SDK'sının oluşturabileceği kapsamlı bir özel durumlar ve hata kodları kümesi vardır. Özellikle Azure Identity için anlaşılması önemli olan birkaç önemli özel durum türü vardır.

ClientAuthenticationException

Hizmete istekte bulunan herhangi bir hizmet istemcisi yöntemi, kimlik doğrulama hatalarından kaynaklanan özel durumlar oluşturabilir. Bu özel durumlar mümkündür çünkü belirteç hizmete yapılan ilk çağrıda kimlik bilgisinden ve belirteci yenilemesi gereken hizmete yapılan sonraki isteklerde istenir.

Azure Identity sınıfları, özel durum mesajında hatanın kaynağını açıklayan ve muhtemelen hata mesajını içeren ayrıntılarla ClientAuthenticationException yükseltir, bu hataları hizmet istemcisindeki hatalardan ayırt etmek için. Uygulamaya bağlı olarak, bu hatalar kurtarılabilir veya kurtarılamayabilir. Aşağıdaki kodda ClientAuthenticationException yakalama örneği gösterilmektedir.

// Create a secret client using the DefaultAzureCredential
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://myvault.vault.azure.net/")
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

try {
    KeyVaultSecret secret = client.getSecret("secret1");
} catch (ClientAuthenticationException e) {
    //Handle Exception
    e.printStackTrace();
}

Kimlik Bilgileri Ulaşılamıyor İstisnası

CredentialUnavailableException, ClientAuthenticationException türünden türetilmiş özel bir istisna türüdür. Bu özel durum türü, gerekli yapılandırma veya kurulumun olmaması nedeniyle kimlik bilgilerinin mevcut ortamda kimlik doğrulaması yapamamasını göstermek için kullanılır. Bu özel durum, DefaultAzureCredential ve ChainedTokenCredential gibi zincirlenmiş kimlik bilgileri türleri için zincirdeki diğer kimlik bilgileri türlerini denemeye devam etmeleri amacıyla bir sinyal olarak da kullanılır.

İzin sorunları

HttpResponseException, 401 veya 403 ile sonuçlanan hizmet istemcilerine yapılan çağrılar, genellikle çağıranın belirli bir API için yeterli izinlere sahip olmadığını gösterir. Belirli bir istek için hangi rollerin gerekli olduğunu belirlemek için hizmet belgelerine bakın. Kimliği doğrulanmış kullanıcıya veya hizmet sorumlusuna kaynakta uygun rollerin verildiğinden emin olun.

Özel durum iletilerinde ilgili bilgileri bulma

ClientAuthenticationException kimlik bilgileri doğrulanırken beklenmeyen hatalar oluştuğunda oluşur. Bu hatalar, Microsoft Entra güvenlik belirteci hizmetine (STS) yönelik isteklerden alınan hataları içerebilir ve genellikle tanılamaya yardımcı olacak bilgiler içerir. Aşağıdaki ClientAuthenticationException iletiyi göz önünde bulundurun:

ClientSecretCredential authentication failed: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details.

Original exception:
AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.
Trace ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Correlation ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Timestamp: 2022-01-01 00:00:00Z

Bu hata iletisi aşağıdaki bilgileri içerir:

  • Başarısız kimlik bilgisi türü: Kimlik doğrulaması başarısız olan kimlik bilgisi türü : bu örnekte, ClientSecretCredential. Bu bilgiler, DefaultAzureCredential veya ChainedTokenCredential gibi zincirlenmiş kimlik bilgileri türleriyle ilgili sorunları tanılarken yararlıdır.

  • STS hata kodu ve iletisi: Microsoft Entra STS'den döndürülen hata kodu ve ileti - bu durumda, AADSTS7000215: Invalid client secret provided. bu bilgiler isteğin başarısız olmasının belirli nedeni hakkında içgörü sağlayabilir. Örneğin, bu özel durumda, sağlanan istemci gizli anahtarı yanlış olduğu için. STS hata kodları hakkında daha fazla bilgi için AADSTS hata kodları bölümüne, Microsoft Entra kimlik doğrulama ve yetkilendirme hata kodları dokümanında bakın.

  • Bağıntı Kimliği ve zaman damgası: Sunucu tarafı günlüklerinde isteği tanımlamak için kullanılan bağıntı kimliği ve çağrı zaman damgası. Bu bilgiler, beklenmeyen STS hatalarını tanılarken mühendisleri desteklemek için yararlıdır.

Kayıt tutmayı etkinleştirme ve yapılandırma

Java için Azure SDK, uygulama hatalarını gidermeye ve bunların çözümünü hızlandırmaya yardımcı olmak için tutarlı bir günlük hikayesi sunar. Oluşturulan günlükler, kök sorunun bulunmasına yardımcı olmak için terminal durumuna ulaşmadan önce uygulamanın akışını yakalar. Günlüğe kaydetme hakkında yönergeler için bkz. Java için Azure SDK'da günlüğe kaydetmeyi yapılandırma ve Görünüm üzerinden sorun giderme.

Temel alınan MSAL kitaplığı MSAL4J ayrıca ayrıntılı günlük kaydına sahiptir. Bu kayıt işlemi son derece ayrıntılıdır ve belirteçler de dahil olmak üzere tüm kişisel verileri içerir. Bu günlük kaydı en çok ürün desteğiyle çalışırken kullanışlıdır. v1.10.0 itibarıyla, bu günlüğü sunan özelliklerin enableUnsafeSupportLogging() adlı bir yöntemi vardır.

Dikkat

Azure Kimlik kitaplığındaki istekler ve yanıtlar hassas bilgiler içerir. Hesap güvenliğinin tehlikeye atılmasını önlemek için çıkışı özelleştirirken günlükleri korumak için önlemler almanız gerekir.

Sonraki adımlar

Bu makaledeki sorun giderme kılavuzu, Java istemci kitaplıkları için Azure SDK'sını kullanırken karşılaşabileceğiniz sorunları çözmeye yardımcı olmazsa, Azure SDK for Java GitHub deposunda bir sorun bildirmenizi tavsiye ederiz.