Repository navigation
[Identity] Harden AKS identity binding proxy support and prepare release - #50917
Merged
Merged
Conversation
vcolin7
requested review from
Jonathan Cárdenas (JonathanCrd),
KarishmaGhiya,
Anannya Patra (anannya03),
Maor Leger (maorleger),
Minh-Anh Phan (minhanh-phan) and
Steven Vukelich (vukelich)
and
a balanced review from Copilot
October 22, 2026 09:43
|
Azure Pipelines: Successfully started running 1 pipeline(s). 35 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The additional TLS name check rejects valid wildcard certificates, breaking previously successful proxy authentication.
1 open issue
What changed in this PR
This PR hardens the opt-in AKS identity binding transport in Azure Identity without enabling it in DefaultAzureCredential or ManagedIdentityCredential.
Changes:
- Isolates per-credential proxy configuration and rejects incompatible transport options.
- Strengthens TLS verification, CA rotation handling, and asynchronous response processing.
- Expands local HTTPS tests, troubleshooting guidance, and compiled usage examples.
| File | Description |
|---|---|
sdk/identity/azure-identity/TROUBLESHOOTING.md |
Documents proxy configuration and TLS failures. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/WorkloadIdentityCredentialTest.java |
Tests builder isolation and opt-in restrictions. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/WorkloadIdentityCredentialIdentityBindingTest.java |
Expands HTTPS routing, rotation, retry, and authentication coverage. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyHttpResponseTest.java |
Tests body caching, scheduling, and error preservation. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyHttpClientTest.java |
Tests lazy asynchronous sends and context forwarding. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyConfigurationTest.java |
Tests proxy URL and CA configuration validation. |
sdk/identity/azure-identity/src/samples/java/com/azure/identity/credential/JavaDocCodeSnippets.java |
Adds an identity binding construction example. |
sdk/identity/azure-identity/src/main/java/com/azure/identity/WorkloadIdentityCredentialBuilder.java |
Clones transport options and rejects incompatible settings. |
sdk/identity/azure-identity/src/main/java/com/azure/identity/WorkloadIdentityCredential.java |
Clarifies workload identity and binding JavaDoc. |
sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyHttpResponse.java |
Offloads body reads and propagates I/O failures. |
sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyHttpClient.java |
Hardens TLS checks, CA reloads, and connection handling. |
sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/customtokenproxy/CustomTokenProxyConfiguration.java |
Tightens proxy URL and CA validation. |
sdk/identity/azure-identity/README.md |
Adds setup requirements and opt-in usage guidance. |
sdk/identity/azure-identity/CHANGELOG.md |
Records proxy hardening and preview compatibility changes. |
Review effort: Balanced
vcolin7
force-pushed
the
vcolin7-aks-identity-binding
branch
from
October 23, 2026 06:19
cfff6ab to
0071fd7
Compare
Jonathan Cárdenas (JonathanCrd)
approved these changes
Oct 23, 2026
Upgraded dependencies for azure-core and azure-core-http-netty.
Updated release date for version 1.19.0 and added details about the new enableAzureProxy method.
Vinay Gera (g2vinay)
approved these changes
Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
AKS identity binding mode already exists in the
1.19.0-beta.xline, but its proxy handling could retain configuration across builds, miss the configured TLS name, or hide response I/O failures. This PR hardens that path and updates the package version references for1.19.0, without enabling identity binding mode inDefaultAzureCredentialorManagedIdentityCredential.Compatibility:
enableAzureProxy()remains opt-in. A suppliedHttpPipelineretains Azure Core's normal precedence, and this PR does not add a rejection of custom pipelines or legacyproxyOptions.This change does not regenerate an SDK from Swagger or TypeSpec.
Background: AKS identity binding guide and Azure/azure-sdk-for-net#63944.
Validation
Real AKS live run
The gist's enabled/disabled matrix passed on October 22, 2026, using the locally built
azure-identity 1.19.0candidate from commitf8dca06fa9f670d6421cfd78dd19b415c653efec, running on Java 25 in AKS.AZURE_KUBERNETES_CA_FILE). All successful tokens were checked for the expected tenant and managed-identity client ID, a futureAccessToken.getExpiresAt(), and an unexpired JWTexp.403 AuthorizationFailed, confirming token acceptance without resource-access permissionAADSTS700211; 2 direct responses and zero proxy responsesRouting counts came from a pipeline policy examining the transport-adjusted request URL returned with each response, not the original Entra URL or a packet capture.
Live coverage used CA-file trust; live CA rotation and fault injection were not performed.
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines
Written with the help or Copilot