@@ -5,7 +5,7 @@ import { ConfigurationSetting, isSecretReference, parseSecretReference } from "@
5
5
import { IKeyValueAdapter } from "../IKeyValueAdapter.js" ;
6
6
import { KeyVaultOptions } from "./KeyVaultOptions.js" ;
7
7
import { ArgumentError , KeyVaultReferenceError } from "../common/error.js" ;
8
- import { SecretClient , parseKeyVaultSecretIdentifier } from "@azure/keyvault-secrets" ;
8
+ import { KeyVaultSecretIdentifier , SecretClient , parseKeyVaultSecretIdentifier } from "@azure/keyvault-secrets" ;
9
9
import { isRestError } from "@azure/core-rest-pipeline" ;
10
10
import { AuthenticationError } from "@azure/identity" ;
11
11
@@ -29,32 +29,28 @@ export class AzureKeyVaultKeyValueAdapter implements IKeyValueAdapter {
29
29
if ( ! this . #keyVaultOptions) {
30
30
throw new ArgumentError ( "Failed to process the Key Vault reference because Key Vault options are not configured." ) ;
31
31
}
32
- let secretName , vaultUrl , sourceId , version ;
32
+ let secretIdentifier : KeyVaultSecretIdentifier ;
33
33
try {
34
- const { name : parsedName , vaultUrl : parsedVaultUrl , sourceId : parsedSourceId , version : parsedVersion } = parseKeyVaultSecretIdentifier (
34
+ secretIdentifier = parseKeyVaultSecretIdentifier (
35
35
parseSecretReference ( setting ) . value . secretId
36
36
) ;
37
- secretName = parsedName ;
38
- vaultUrl = parsedVaultUrl ;
39
- sourceId = parsedSourceId ;
40
- version = parsedVersion ;
41
37
} catch ( error ) {
42
38
throw new KeyVaultReferenceError ( buildKeyVaultReferenceErrorMessage ( "Invalid Key Vault reference." , setting ) , { cause : error } ) ;
43
39
}
44
40
45
41
try {
46
42
// precedence: secret clients > credential > secret resolver
47
- const client = this . #getSecretClient( new URL ( vaultUrl ) ) ;
43
+ const client = this . #getSecretClient( new URL ( secretIdentifier . vaultUrl ) ) ;
48
44
if ( client ) {
49
- const secret = await client . getSecret ( secretName , { version } ) ;
45
+ const secret = await client . getSecret ( secretIdentifier . name , { version : secretIdentifier . version } ) ;
50
46
return [ setting . key , secret . value ] ;
51
47
}
52
48
if ( this . #keyVaultOptions. secretResolver ) {
53
- return [ setting . key , await this . #keyVaultOptions. secretResolver ( new URL ( sourceId ) ) ] ;
49
+ return [ setting . key , await this . #keyVaultOptions. secretResolver ( new URL ( secretIdentifier . sourceId ) ) ] ;
54
50
}
55
51
} catch ( error ) {
56
52
if ( isRestError ( error ) || error instanceof AuthenticationError ) {
57
- throw new KeyVaultReferenceError ( buildKeyVaultReferenceErrorMessage ( "Failed to resolve Key Vault reference." , setting , sourceId ) , { cause : error } ) ;
53
+ throw new KeyVaultReferenceError ( buildKeyVaultReferenceErrorMessage ( "Failed to resolve Key Vault reference." , setting , secretIdentifier . sourceId ) , { cause : error } ) ;
58
54
}
59
55
throw error ;
60
56
}
0 commit comments