Skip to content

Commit 7a0847e

Browse files
committed
use aad scope from connection string
1 parent 121cd55 commit 7a0847e

File tree

7 files changed

+30
-24
lines changed

7 files changed

+30
-24
lines changed

.github/workflows/build-common.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
required: false
99

1010
env:
11-
EXPORTER_VERSION: 1.0.0-beta.1 # to be updated with the latest version
11+
EXPORTER_VERSION: 1.0.0-beta.4 # to be updated with the latest version
1212

1313
jobs:
1414
spotless:

agent/agent-tooling/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ dependencies {
2121
implementation(project(":agent:agent-profiler:agent-diagnostics"))
2222
implementation(project(":etw:java"))
2323

24-
implementation("com.azure:azure-monitor-opentelemetry-autoconfigure:1.0.0-beta.3")
24+
implementation("com.azure:azure-monitor-opentelemetry-autoconfigure:1.0.0-beta.4")
2525
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-bootstrap")
2626
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling")
2727
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling-java9")

agent/agent-tooling/gradle.lockfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ com.azure:azure-core-http-netty:1.15.7=runtimeClasspath
99
com.azure:azure-core:1.54.1=runtimeClasspath
1010
com.azure:azure-identity:1.15.3=runtimeClasspath
1111
com.azure:azure-json:1.3.0=runtimeClasspath
12-
com.azure:azure-monitor-opentelemetry-autoconfigure:1.0.0-beta.3=runtimeClasspath
12+
com.azure:azure-monitor-opentelemetry-autoconfigure:1.0.0-beta.4=runtimeClasspath
1313
com.azure:azure-sdk-bom:1.2.31=runtimeClasspath
1414
com.azure:azure-storage-blob:12.29.0=runtimeClasspath
1515
com.azure:azure-storage-common:12.28.0=runtimeClasspath

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/httpclient/LazyHttpClient.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@
3737

3838
public class LazyHttpClient implements HttpClient {
3939

40-
private static final String APPLICATIONINSIGHTS_AUTHENTICATION_SCOPE =
41-
"https://monitor.azure.com//.default";
42-
4340
private static final HttpClient INSTANCE = new LazyHttpClient();
4441

4542
public static final CountDownLatch safeToInitLatch = new CountDownLatch(1);
@@ -113,16 +110,18 @@ private static HttpClient init() {
113110
}
114111

115112
public static HttpPipeline newHttpPipeLineWithDefaultRedirect(
116-
@Nullable Configuration.AadAuthentication aadConfiguration) {
117-
return newHttpPipeLine(aadConfiguration, new RedirectPolicy(new DefaultRedirectStrategy()));
113+
@Nullable Configuration.AadAuthentication aadConfiguration,
114+
String aadAudienceWithScope) {
115+
return newHttpPipeLine(aadConfiguration, aadAudienceWithScope, new RedirectPolicy(new DefaultRedirectStrategy()));
118116
}
119117

120118
public static HttpPipeline newHttpPipeLine(
121119
@Nullable Configuration.AadAuthentication aadConfiguration,
120+
String aadAudienceWithScope,
122121
HttpPipelinePolicy... additionalPolicies) {
123122
List<HttpPipelinePolicy> policies = new ArrayList<>();
124123
if (aadConfiguration != null && aadConfiguration.enabled) {
125-
policies.add(getAuthenticationPolicy(aadConfiguration));
124+
policies.add(getAuthenticationPolicy(aadConfiguration, aadAudienceWithScope));
126125
}
127126
policies.addAll(asList(additionalPolicies));
128127
// Add Logging Policy. Can be enabled using AZURE_LOG_LEVEL.
@@ -144,31 +143,34 @@ public Mono<HttpResponse> send(HttpRequest request, Context context) {
144143
}
145144

146145
private static HttpPipelinePolicy getAuthenticationPolicy(
147-
Configuration.AadAuthentication configuration) {
146+
Configuration.AadAuthentication configuration,
147+
String aadAudienceWithScope) {
148148
switch (configuration.type) {
149149
case UAMI:
150-
return getAuthenticationPolicyWithUami(configuration);
150+
return getAuthenticationPolicyWithUami(configuration, aadAudienceWithScope);
151151
case SAMI:
152-
return getAuthenticationPolicyWithSami();
152+
return getAuthenticationPolicyWithSami(aadAudienceWithScope);
153153
case VSCODE:
154-
return getAuthenticationPolicyWithVsCode();
154+
return getAuthenticationPolicyWithVsCode(aadAudienceWithScope);
155155
case CLIENTSECRET:
156-
return getAuthenticationPolicyWithClientSecret(configuration);
156+
return getAuthenticationPolicyWithClientSecret(configuration, aadAudienceWithScope);
157157
}
158158
throw new IllegalStateException(
159159
"Invalid Authentication Type used in AAD Authentication: " + configuration.type);
160160
}
161161

162162
private static HttpPipelinePolicy getAuthenticationPolicyWithUami(
163-
Configuration.AadAuthentication configuration) {
163+
Configuration.AadAuthentication configuration,
164+
String aadAudienceWithScope) {
164165
ManagedIdentityCredentialBuilder managedIdentityCredential =
165166
new ManagedIdentityCredentialBuilder().clientId(configuration.clientId);
166167
return new BearerTokenAuthenticationPolicy(
167-
managedIdentityCredential.build(), APPLICATIONINSIGHTS_AUTHENTICATION_SCOPE);
168+
managedIdentityCredential.build(), aadAudienceWithScope);
168169
}
169170

170171
private static HttpPipelinePolicy getAuthenticationPolicyWithClientSecret(
171-
Configuration.AadAuthentication configuration) {
172+
Configuration.AadAuthentication configuration,
173+
String aadAudienceWithScope) {
172174
ClientSecretCredentialBuilder credential =
173175
new ClientSecretCredentialBuilder()
174176
.tenantId(configuration.tenantId)
@@ -178,20 +180,22 @@ private static HttpPipelinePolicy getAuthenticationPolicyWithClientSecret(
178180
credential.authorityHost(configuration.authorityHost);
179181
}
180182
return new BearerTokenAuthenticationPolicy(
181-
credential.build(), APPLICATIONINSIGHTS_AUTHENTICATION_SCOPE);
183+
credential.build(), aadAudienceWithScope);
182184
}
183185

184-
private static HttpPipelinePolicy getAuthenticationPolicyWithVsCode() {
186+
private static HttpPipelinePolicy getAuthenticationPolicyWithVsCode(
187+
String aadAudienceWithScope) {
185188
VisualStudioCodeCredential visualStudioCodeCredential =
186189
new VisualStudioCodeCredentialBuilder().build();
187190
return new BearerTokenAuthenticationPolicy(
188-
visualStudioCodeCredential, APPLICATIONINSIGHTS_AUTHENTICATION_SCOPE);
191+
visualStudioCodeCredential, aadAudienceWithScope);
189192
}
190193

191-
private static HttpPipelinePolicy getAuthenticationPolicyWithSami() {
194+
private static HttpPipelinePolicy getAuthenticationPolicyWithSami(
195+
String aadAudienceWithScope) {
192196
ManagedIdentityCredential managedIdentityCredential =
193197
new ManagedIdentityCredentialBuilder().build();
194198
return new BearerTokenAuthenticationPolicy(
195-
managedIdentityCredential, APPLICATIONINSIGHTS_AUTHENTICATION_SCOPE);
199+
managedIdentityCredential, aadAudienceWithScope);
196200
}
197201
}

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) {
201201
if (telemetryClient.getConnectionString() != null) {
202202
statsbeatModule.start(
203203
AzureMonitorHelper.createStatsbeatTelemetryItemExporter(
204-
LazyHttpClient.newHttpPipeLine(null), statsbeatModule, tempDir),
204+
LazyHttpClient.newHttpPipeLine(null, telemetryClient.getConnectionString().getAadAudienceWithScope()), statsbeatModule, tempDir),
205205
telemetryClient::getStatsbeatConnectionString,
206206
telemetryClient::getInstrumentationKey,
207207
configuration.internal.statsbeat.disabledAll,
@@ -224,7 +224,7 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) {
224224
if (configuration.preview.liveMetrics.enabled) {
225225
quickPulse =
226226
QuickPulse.create(
227-
LazyHttpClient.newHttpPipeLineWithDefaultRedirect(configuration.authentication),
227+
LazyHttpClient.newHttpPipeLineWithDefaultRedirect(configuration.authentication, telemetryClient.getConnectionString().getAadAudienceWithScope()),
228228
() -> {
229229
ConnectionString connectionString = telemetryClient.getConnectionString();
230230
return connectionString == null ? null : connectionString.getLiveEndpoint();

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/profiler/ProfilingInitializer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ private synchronized void performInit() {
121121
httpPipeline =
122122
LazyHttpClient.newHttpPipeLine(
123123
telemetryClient.getAadAuthentication(),
124+
telemetryClient.getConnectionString().getAadAudienceWithScope(),
124125
new RedirectPolicy(
125126
new DefaultRedirectStrategy(
126127
3,

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/telemetry/TelemetryClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ private BatchItemProcessor initBatchItemProcessor(
227227
HttpPipeline httpPipeline =
228228
LazyHttpClient.newHttpPipeLine(
229229
aadAuthentication,
230+
connectionString.getAadAudienceWithScope(),
230231
new NetworkStatsbeatHttpPipelinePolicy(statsbeatModule.getNetworkStatsbeat()));
231232
// TODO (heya) refactor the following by using AzureMonitorHelper.createTelemetryItemExporter by
232233
// passing in getNonessentialStatsbeat

0 commit comments

Comments
 (0)