Řešení potíží s ověřováním aplikací hostovaných v Azure
Tento článek obsahuje pokyny k řešení problémů, ke kterým dochází při ověřování aplikací Azure SDK pro Javu hostovaných v Azure prostřednictvím různých TokenCredential
implementací. Další informace najdete v tématu Ověřování aplikací Java hostovaných v Azure.
Řešení potíží s defaultAzureCredential
Při použití DefaultAzureCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." |
Všechny přihlašovací údaje v řetězu DefaultAzureCredential se nepodařilo načíst token, přičemž každý vyvolá CredentialUnavailableException . |
Povolte protokolování , abyste ověřili, že se přihlašovací údaje vyzkoušely, a získejte další diagnostické informace. Další informace najdete v průvodci odstraňováním potíží s jedním z následujících základních typů přihlašovacích údajů: - EnvironmentCredential - ManagedIdentityCredential - VisualStudioCodeCredential - AzureCLICredential - AzurePowershellCredential |
HttpResponseException raised from the client with a status code of 401 or 403 |
Ověření proběhlo úspěšně, ale autorizace služby Azure odpověděla stavovým kódem 401 (Authenticate) nebo 403 (Zakázáno). K tomuto problému často dochází při DefaultAzureCredential ověřování jiného účtu, než je zamýšlený účet, nebo nemá přiřazená správná oprávnění nebo role. |
Povolte protokolování , abyste zjistili, které přihlašovací údaje v řetězci vrátily ověřovací token. V případě, že přihlašovací údaje jiné než očekávané vrací token, vyhledejte tento problém tak, že se odhlásíte z odpovídajícího vývojového nástroje. Ujistěte se, že je k používanému účtu přiřazená správná role. Například role specifická pro službu místo role vlastníka předplatného. |
Řešení potíží s EnvironmentCredential
Při použití EnvironmentCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
Environment variables aren't fully configured. |
Nebyla nastavena platná kombinace proměnných prostředí. | Ujistěte se, že jsou před spuštěním aplikace pro zamýšlenou metodu ověřování nastavené příslušné proměnné prostředí, jak je popsáno v následujícím seznamu: - Pokud chcete ověřit instanční objekt pomocí tajného klíče klienta, ujistěte se, že jsou proměnné AZURE_CLIENT_ID AZURE_TENANT_ID , a AZURE_CLIENT_SECRET jsou správně nastavené. – Pokud chcete ověřit instanční objekt pomocí certifikátu, ujistěte se, že proměnné AZURE_CLIENT_ID , AZURE_TENANT_ID AZURE_CLIENT_CERTIFICATE_PATH , a volitelně AZURE_CLIENT_CERTIFICATE_PASSWORD jsou správně nastavené. – Pokud chcete ověřit uživatele pomocí hesla, ujistěte se, že jsou proměnné AZURE_USERNAME správně AZURE_PASSWORD nastavené. |
Řešení potíží s managedIdentityCredential
ManagedIdentityCredential
je navržený tak, aby fungoval na různých hostitelích Azure, kteří poskytují spravovanou identitu. Konfigurace spravované identity a řešení potíží se selháními se liší od hostitele po hostitele. Následující seznam ukazuje hostitelské prostředí Azure, která můžete přiřadit spravovanou identitu a která ManagedIdentityCredential
podporuje:
- Aplikace Azure Service a Azure Functions – Řešení potíží s konfigurací -
- Azure Arc – konfigurace
- Azure Kubernetes Service – Řešení potíží s konfigurací -
- Azure Service Fabric – konfigurace
- Řešení potíží s konfigurací - virtuálních počítačů Azure a škálovacích sad
Spravovaná identita virtuálního počítače Azure
Při použití ManagedIdentityCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
The requested identity hasn't been assigned to this resource. |
Koncový bod služby IMDS (Azure Instance Metadata Service) odpověděl stavovým kódem 400, který indikuje, že požadovaná identita není přiřazená k virtuálnímu počítači. | Pokud používáte identitu přiřazenou uživatelem, ujistěte se, že je zadaná clientId identita správná. Pokud používáte identitu přiřazenou systémem, ujistěte se, že jste ji správně povolili. Další informace najdete v části Povolení spravované identity přiřazené systémem na existujícím virtuálním počítači v části Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači pomocí webu Azure Portal. |
The request failed due to a gateway error. |
Požadavek na koncový bod IMDS selhal kvůli chybě brány, stavového kódu 502 nebo 504. | IMDS nepodporuje volání přes proxy server nebo bránu. Zakázání proxy serverů nebo bran spuštěných na virtuálním počítači pro volání koncového bodu IMDS http://169.254.169.254/ |
No response received from the managed identity endpoint. |
Pro požadavek na IMDS nebyla přijata žádná odpověď nebo vypršel časový limit požadavku. | – Ujistěte se, že jste na virtuálním počítači správně nakonfigurovali spravovanou identitu. Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači pomocí webu Azure Portal. – Ověřte, že je koncový bod IMDS dostupný na virtuálním počítači. Další informace najdete v další části. |
Multiple attempts failed to obtain a token from the managed identity endpoint. |
Opakované pokusy o načtení tokenu z koncového bodu IMDS byly vyčerpány. | - Další informace o konkrétních selháních najdete ve vnitřních zprávách o výjimce. Pokud jsou data zkrácena, můžete získat další podrobnosti shromažďováním protokolů. – Ujistěte se, že jste na virtuálním počítači správně nakonfigurovali spravovanou identitu. Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači pomocí webu Azure Portal. – Ověřte, že je koncový bod IMDS dostupný na virtuálním počítači. Další informace najdete v další části. |
Ověřte, že je na virtuálním počítači k dispozici IMDS.
Pokud máte přístup k virtuálnímu počítači, můžete ověřit, že je koncový bod mangované identity dostupný přes příkazový řádek, curl
jak je znázorněno v následujícím příkladu:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Upozorňující
Výstup tohoto příkazu obsahuje platný přístupový token. Abyste se vyhnuli narušení zabezpečení účtu, nesdílejte tento přístupový token.
Spravovaná identita služeb Azure App Service a Azure Functions
Při použití ManagedIdentityCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
ManagedIdentityCredential authentication unavailable. |
Proměnné prostředí nakonfigurované hostitelem služby App Services nebyly k dispozici. | – Ujistěte se, že jste správně nakonfigurovali spravovanou identitu v instanci služby App Service. Další informace najdete v tématu Použití spravovaných identit pro App Service a Azure Functions. – Ověřte, že jste správně nakonfigurovali prostředí App Service a že je dostupný koncový bod spravované identity. Další informace najdete v další části. |
Ověřte, že je dostupný koncový bod spravované identity služby App Service.
Pokud máte přístup k SSH k instanci služby App Service, můžete ověřit, že je spravovaná identita v prostředí dostupná. Nejprve se ujistěte, že jste nastavili proměnné MSI_ENDPOINT
prostředí a MSI_SECRET
v prostředí. Potom můžete ověřit, jestli je koncový bod spravované identity dostupný pomocí curl
, jak je znázorněno v následujícím příkladu:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Upozorňující
Výstup tohoto příkazu obsahuje platný přístupový token. Abyste se vyhnuli narušení zabezpečení účtu, nesdílejte tento přístupový token.
Spravovaná identita služby Azure Kubernetes Service
Identita podu pro Kubernetes
Při použití ManagedIdentityCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
No Managed Identity endpoint found |
Aplikace se pokusila ověřit před přiřazením identity ke svému podu. | Ověřte, že je pod správně označený. K tomuto problému dochází také v případě, že se správně označený pod ověří, než je identita připravená. Pokud chcete zabránit inicializačním časům, nakonfigurujte NMI tak, aby v odpovědích nastavila hlavičku Retry-After . Další informace najdete v tématu Nastavení hlavičky Opakovat-After v odpovědi NMI v dokumentaci k identitě podu. |
Řešení potíží s funkcí WorkloadIdentityCredential
Při použití WorkloadIdentityCredential
můžete volitelně vyzkoušet nebo zachytit pro CredentialUnavailableException
. Následující tabulka uvádí chyby, které tato výjimka označuje, a metody zmírnění rizik:
Chybová zpráva | Popis | Omezení rizik |
---|---|---|
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. |
WorkloadIdentityCredential tenantId vyžaduje clientId a tokenFilePath k ověření pomocí Microsoft Entra ID. |
Pokud používáte DefaultAzureCredential , postupujte takhle: – Ujistěte se, že je ID klienta zadané prostřednictvím workloadIdentityClientId setter nebo AZURE_CLIENT_ID proměnné prostředí. – Ujistěte se, že je ID tenanta AZURE_TENANT_ID zadané prostřednictvím proměnné prostředí. – Ujistěte se, že jste zadali cestu k souboru tokenu AZURE_FEDERATED_TOKEN_FILE prostřednictvím proměnné prostředí. – Ujistěte se, že je hostitel autority zadaný prostřednictvím AZURE_AUTHORITY_HOST proměnné prostředí. Pokud používáte WorkloadIdentityCredential , postupujte takhle: – Ujistěte se, že je ID tenanta zadané prostřednictvím tenantId setter v tvůrci přihlašovacích údajů nebo AZURE_TENANT_ID proměnné prostředí. – Ujistěte se, že je ID klienta zadáno prostřednictvím clientId setter v tvůrci přihlašovacích údajů nebo AZURE_CLIENT_ID proměnné prostředí. – Ujistěte se, že je cesta k souboru tokenu zadaná prostřednictvím tokenFilePath setter v tvůrci přihlašovacích údajů nebo AZURE_FEDERATED_TOKEN_FILE proměnné prostředí. – Další problémy najdete v průvodci odstraňováním potíží s produktem. |
Další kroky
Pokud pokyny k řešení potíží v tomto článku nepomáhají vyřešit problémy při použití sady Azure SDK pro klientské knihovny Java, doporučujeme vám založit problém v úložišti Azure SDK pro Javu na GitHubu.