Skip to content

Commit 9d3b248

Browse files
authored
VS Code Credential Updates (#45998)
1 parent a8d22b8 commit 9d3b248

File tree

4 files changed

+35
-12
lines changed

4 files changed

+35
-12
lines changed

sdk/identity/azure-identity/TROUBLESHOOTING.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ This troubleshooting guide covers failure investigation techniques, common error
2121
- [Troubleshoot AzurePowerShellCredential authentication issues](#troubleshoot-azurepowershellcredential-authentication-issues)
2222
- [Troubleshoot WorkloadIdentityCredential authentication issues](#troubleshoot-workloadidentitycredential-authentication-issues)
2323
- [Troubleshoot IntelliJCredential authentication issues](#troubleshoot-intellijcredential-authentication-issues)
24+
- [Troubleshoot VisualStudioCodeCredential authentication issues](#troubleshoot-visualstudiocodecredential-authentication-issues)
2425
- [Troubleshoot AzurePipelinesCredential authentication issues](#troubleshoot-azurepipelinescredential-authentication-issues)
2526
- [Troubleshoot authentication timeout issues](#troubleshoot-authentication-timeout-issues)
2627
- [Troubleshoot Web Account Manager (WAM) brokered authentication issues](#troubleshoot-web-account-manager-wam-brokered-authentication-issues)
@@ -270,6 +271,27 @@ Get-AzAccessToken -ResourceUrl "https://management.core.windows.net"
270271

271272
> Note: Azure Toolkit for IntelliJ version 3.53 and higher are supported by this credential. If you are using an older version, please update to the latest version.
272273
274+
275+
276+
277+
# Troubleshoot `VisualStudioCodeCredential` authentication issues
278+
279+
> **Applies to:** Version 1.17.0-beta.1 and later
280+
281+
As of version 1.17.0-beta.1, `VisualStudioCodeCredential` uses broker authentication to sign in using the Azure Resources extension in Visual Studio Code. This approach requires the `azure-identity-broker` dependency and currently only works on Windows. Broker authentication is not yet supported on macOS or Linux.
282+
283+
#### Platform Support
284+
285+
> **Note:** VisualStudioCodeCredential with broker authentication is currently only supported on Windows. macOS and Linux are not yet supported.
286+
287+
#### Common Error
288+
289+
| Error Message | Description | Mitigation |
290+
|---|---|---|
291+
| `CredentialUnavailableException: Visual Studio Code Authentication is not available. Ensure you have azure-identity-broker dependency added to your application. Then ensure, you have signed into Azure via VS Code and have Azure Resources Extension installed in VS Code.` | Broker authentication is not available, which may be due to missing dependencies, not being signed in to Azure in VS Code, or the Azure Resources extension not being installed. | <ul><li>Ensure your project includes the <code>azure-identity-broker</code> dependency.</li><li>In Visual Studio Code, install the <a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureresourcegroups">Azure Resources extension</a>.</li><li>Sign in to Azure using the "Azure: Sign In" command in VS Code.</li><li>Restart your application after signing in.</li></ul> |
292+
293+
> VisualStudioCodeCredential is intended for local development scenarios and is not recommended for production environments.
294+
273295
## Troubleshoot `AzurePipelinesCredential` authentication issues
274296

275297
| Error Message |Description| Mitigation |

sdk/identity/azure-identity/src/main/java/com/azure/identity/DefaultAzureCredentialBuilder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,10 @@ private void addProdCredentials(List<TokenCredential> credentials) {
334334
// Helper to add dev credentials
335335
private void addDevCredentials(List<TokenCredential> credentials) {
336336
credentials.add(new IntelliJCredential(tenantId, identityClientOptions.clone()));
337+
credentials.add(new VisualStudioCodeCredential(tenantId, identityClientOptions.clone()));
337338
credentials.add(new AzureCliCredential(tenantId, identityClientOptions.clone()));
338339
credentials.add(new AzurePowerShellCredential(tenantId, identityClientOptions.clone()));
339340
credentials.add(new AzureDeveloperCliCredential(tenantId, identityClientOptions.clone()));
340-
if (IdentityUtil.isVsCodeBrokerAuthAvailable()) {
341-
credentials.add(new VisualStudioCodeCredential(tenantId, identityClientOptions.clone()));
342-
}
343341
}
344342

345343
private WorkloadIdentityCredential getWorkloadIdentityCredential() {

sdk/identity/azure-identity/src/main/java/com/azure/identity/VisualStudioCodeCredential.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ public Mono<AccessToken> getToken(TokenRequestContext request) {
6868
return Mono
6969
.error(new CredentialUnavailableException("Visual Studio Code Authentication is not available."
7070
+ " Ensure you have azure-identity-broker dependency added to your application."
71-
+ " Then ensure, you have signed into Azure via VS Code and have Azure Resources Extension installed in VS Code."));
71+
+ " Then ensure, you have signed into Azure via VS Code and have Azure Resources Extension installed in VS Code."
72+
+ " For more details, refer to https://aka.ms/azsdk/java/identity/vscodecredential/troubleshoot"));
7273
}
7374
}).doOnNext(token -> LoggingUtil.logTokenSuccess(LOGGER, request)).doOnError(error -> {
7475
LoggingUtil.logTokenError(LOGGER, clientOptions, request, error);

sdk/identity/azure-identity/src/test/java/com/azure/identity/DefaultAzureCredentialTest.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -659,13 +659,14 @@ public void testDeveloperOnlyCredentialsChain(String devValue) {
659659
List<TokenCredential> credentials = extractCredentials(credential);
660660

661661
// Only developer credentials should be present (4)
662-
assertEquals(4, credentials.size());
662+
assertEquals(5, credentials.size());
663663

664664
// Verify developer credentials in order
665665
assertInstanceOf(IntelliJCredential.class, credentials.get(0));
666-
assertInstanceOf(AzureCliCredential.class, credentials.get(1));
667-
assertInstanceOf(AzurePowerShellCredential.class, credentials.get(2));
668-
assertInstanceOf(AzureDeveloperCliCredential.class, credentials.get(3));
666+
assertInstanceOf(VisualStudioCodeCredential.class, credentials.get(1));
667+
assertInstanceOf(AzureCliCredential.class, credentials.get(2));
668+
assertInstanceOf(AzurePowerShellCredential.class, credentials.get(3));
669+
assertInstanceOf(AzureDeveloperCliCredential.class, credentials.get(4));
669670
}
670671

671672
@ParameterizedTest
@@ -772,14 +773,15 @@ public void testDefaultCredentialChainWithoutFilter() {
772773
List<TokenCredential> credentials = extractCredentials(credential);
773774

774775
// Verify the complete chain with all 7 credentials
775-
assertEquals(7, credentials.size());
776+
assertEquals(8, credentials.size());
776777
assertInstanceOf(EnvironmentCredential.class, credentials.get(0));
777778
assertInstanceOf(WorkloadIdentityCredential.class, credentials.get(1));
778779
assertInstanceOf(ManagedIdentityCredential.class, credentials.get(2));
779780
assertInstanceOf(IntelliJCredential.class, credentials.get(3));
780-
assertInstanceOf(AzureCliCredential.class, credentials.get(4));
781-
assertInstanceOf(AzurePowerShellCredential.class, credentials.get(5));
782-
assertInstanceOf(AzureDeveloperCliCredential.class, credentials.get(6));
781+
assertInstanceOf(VisualStudioCodeCredential.class, credentials.get(4));
782+
assertInstanceOf(AzureCliCredential.class, credentials.get(5));
783+
assertInstanceOf(AzurePowerShellCredential.class, credentials.get(6));
784+
assertInstanceOf(AzureDeveloperCliCredential.class, credentials.get(7));
783785
}
784786

785787
/**

0 commit comments

Comments
 (0)