Skip to content

Commit 23d8e2d

Browse files
author
Adrien Bestel
committed
fix: update azure workload identity authentication to use federated token directly
The environment already reads the value of the file, which made the second read with the actual token fail.
1 parent aa49b75 commit 23d8e2d

File tree

3 files changed

+28
-38
lines changed

3 files changed

+28
-38
lines changed

src/providers/azure-ai-inference/api.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,20 @@ const AzureAIInferenceAPI: ProviderAPIConfig = {
109109
const authorityHost = Environment(c).AZURE_AUTHORITY_HOST;
110110
const tenantId = Environment(c).AZURE_TENANT_ID;
111111
const clientId = azureWorkloadClientId || Environment(c).AZURE_CLIENT_ID;
112-
const federatedTokenFile = Environment(c).AZURE_FEDERATED_TOKEN_FILE;
113-
114-
if (authorityHost && tenantId && clientId && federatedTokenFile) {
115-
const fs = await import('fs');
116-
const federatedToken = fs.readFileSync(federatedTokenFile, 'utf8');
117-
118-
if (federatedToken) {
119-
const scope = 'https://cognitiveservices.azure.com/.default';
120-
const accessToken = await getAzureWorkloadIdentityToken(
121-
authorityHost,
122-
tenantId,
123-
clientId,
124-
federatedToken,
125-
scope
126-
);
127-
return {
128-
Authorization: `Bearer ${accessToken}`,
129-
};
130-
}
112+
const federatedToken = Environment(c).AZURE_FEDERATED_TOKEN;
113+
114+
if (authorityHost && tenantId && clientId && federatedToken) {
115+
const scope = 'https://cognitiveservices.azure.com/.default';
116+
const accessToken = await getAzureWorkloadIdentityToken(
117+
authorityHost,
118+
tenantId,
119+
clientId,
120+
federatedToken,
121+
scope
122+
);
123+
return {
124+
Authorization: `Bearer ${accessToken}`,
125+
};
131126
}
132127
}
133128

src/providers/azure-openai/api.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,25 +56,20 @@ const AzureOpenAIAPIConfig: ProviderAPIConfig = {
5656
const authorityHost = Environment(c).AZURE_AUTHORITY_HOST;
5757
const tenantId = Environment(c).AZURE_TENANT_ID;
5858
const clientId = azureWorkloadClientId || Environment(c).AZURE_CLIENT_ID;
59-
const federatedTokenFile = Environment(c).AZURE_FEDERATED_TOKEN_FILE;
59+
const federatedToken = Environment(c).AZURE_FEDERATED_TOKEN;
6060

61-
if (authorityHost && tenantId && clientId && federatedTokenFile) {
62-
const fs = await import('fs');
63-
const federatedToken = fs.readFileSync(federatedTokenFile, 'utf8');
64-
65-
if (federatedToken) {
66-
const scope = 'https://cognitiveservices.azure.com/.default';
67-
const accessToken = await getAzureWorkloadIdentityToken(
68-
authorityHost,
69-
tenantId,
70-
clientId,
71-
federatedToken,
72-
scope
73-
);
74-
return {
75-
Authorization: `Bearer ${accessToken}`,
76-
};
77-
}
61+
if (authorityHost && tenantId && clientId && federatedToken) {
62+
const scope = 'https://cognitiveservices.azure.com/.default';
63+
const accessToken = await getAzureWorkloadIdentityToken(
64+
authorityHost,
65+
tenantId,
66+
clientId,
67+
federatedToken,
68+
scope
69+
);
70+
return {
71+
Authorization: `Bearer ${accessToken}`,
72+
};
7873
}
7974
}
8075
const headersObj: Record<string, string> = {

src/utils/env.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ const nodeEnv = {
102102
),
103103
AZURE_TENANT_ID: getValueOrFileContents(process.env.AZURE_TENANT_ID),
104104
AZURE_CLIENT_ID: getValueOrFileContents(process.env.AZURE_CLIENT_ID),
105-
AZURE_FEDERATED_TOKEN_FILE: getValueOrFileContents(
105+
AZURE_FEDERATED_TOKEN: getValueOrFileContents(
106106
process.env.AZURE_FEDERATED_TOKEN_FILE
107107
),
108108

0 commit comments

Comments
 (0)