Skip to content

Commit f337fe5

Browse files
psx95damemi
authored andcommitted
Programmatically configure auth headers
1 parent 62bc1f3 commit f337fe5

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ subprojects {
138138
autoServiceVersion = '1.1.1'
139139
autoValueVersion = '1.10.4'
140140
slf4jVersion = '2.0.9'
141+
googleAuthVersion = '1.23.0'
141142
googleCloudVersion = '2.27.0'
142143
googleTraceVersion = '2.30.0'
143144
googleCloudBom = '26.26.0'
@@ -169,6 +170,7 @@ subprojects {
169170
auto_value_annotations : "com.google.auto.value:auto-value-annotations:${autoValueVersion}",
170171
auto_value : "com.google.auto.value:auto-value:${autoValueVersion}",
171172
cloudevents_core : "io.cloudevents:cloudevents-core:${cloudEventsCoreVersion}",
173+
google_auth : "com.google.auth:google-auth-library-oauth2-http:${googleAuthVersion}",
172174
google_cloud_core : "com.google.cloud:google-cloud-core:${googleCloudVersion}",
173175
google_cloud_trace : "com.google.cloud:google-cloud-trace:${googleTraceVersion}",
174176
google_cloud_trace_grpc : "com.google.api.grpc:grpc-google-cloud-trace-v2:${googleTraceVersion}",

examples/otlptrace/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ dependencies {
2626
implementation(libraries.opentelemetry_api)
2727
implementation(libraries.opentelemetry_sdk)
2828
implementation(libraries.opentelemetry_otlp_exporter)
29-
implementation(libraries.google_auth)
3029
implementation(libraries.opentelemetry_sdk_autoconf)
30+
implementation(libraries.google_auth)
3131
}
3232

3333
// Provide headers from env variable
34-
// export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer $(gcloud auth print-access-token),X-Goog-User-Project=otel-test-starter"
3534
// export OTEL_EXPORTER_OTLP_ENDPOINT="http://path/to/yourendpoint:port"
3635
def autoconf_config = [
37-
'-Dotel.resource.attributes=gcp.project_id=otel-test-starter',
36+
'-Dotel.resource.attributes=gcp.project_id=your-gcp-project',
37+
'-Dotel.exporter.otlp.headers=X-Goog-User-Project=your-gcp-project',
3838
'-Dotel.traces.exporter=otlp',
3939
'-Dotel.java.global-autoconfigure.enabled=true',
4040
]

examples/otlptrace/src/main/java/com/google/cloud/opentelemetry/example/otlptrace/OTLPTraceExample.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@
1515
*/
1616
package com.google.cloud.opentelemetry.example.otlptrace;
1717

18+
import com.google.auth.oauth2.GoogleCredentials;
1819
import io.opentelemetry.api.trace.Span;
1920
import io.opentelemetry.context.Scope;
21+
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
22+
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
2023
import io.opentelemetry.sdk.OpenTelemetrySdk;
2124
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
2225
import io.opentelemetry.sdk.common.CompletableResultCode;
26+
import io.opentelemetry.sdk.trace.export.SpanExporter;
2327
import java.io.IOException;
2428
import java.util.Random;
2529
import java.util.concurrent.TimeUnit;
@@ -30,9 +34,29 @@ public class OTLPTraceExample {
3034

3135
private static OpenTelemetrySdk openTelemetrySdk;
3236

33-
private static OpenTelemetrySdk setupTraceExporter() {
34-
// Let the SDK configure itself using environment variables and system properties
35-
return AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
37+
private static OpenTelemetrySdk setupTraceExporter() throws IOException {
38+
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
39+
40+
// Update the SDK configured using environment variables and system properties
41+
AutoConfiguredOpenTelemetrySdk autoConfOTelSdk =
42+
AutoConfiguredOpenTelemetrySdk.builder()
43+
.addSpanExporterCustomizer(
44+
(exporter, configProperties) -> addAuthorizationHeaders(exporter, credentials))
45+
.build();
46+
return autoConfOTelSdk.getOpenTelemetrySdk();
47+
}
48+
49+
// Configures span exporter using configuration from
50+
private static SpanExporter addAuthorizationHeaders(
51+
SpanExporter exporter, GoogleCredentials credentials) {
52+
if (exporter instanceof OtlpHttpSpanExporter) {
53+
OtlpHttpSpanExporterBuilder builder =
54+
((OtlpHttpSpanExporter) exporter)
55+
.toBuilder().addHeader("Authorization", "Bearer " + credentials.getAccessToken());
56+
57+
return builder.build();
58+
}
59+
return exporter;
3660
}
3761

3862
private static void myUseCase(String description) {

0 commit comments

Comments
 (0)