Skip to content

Commit a2d4fce

Browse files
committed
Add audience claim to requests to UserRepository
1 parent 520f316 commit a2d4fce

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/user/ServiceUserRepository.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ class ServiceUserRepository : UserRepository {
9090
tokenUrl = URLBuilder(config.fitbitUserRepositoryTokenUrl.toString()).build(),
9191
clientId = config.fitbitUserRepositoryClientId,
9292
clientSecret = config.fitbitUserRepositoryClientSecret,
93+
scope = "SUBJECT.READ MEASUREMENT.CREATE",
94+
audience = "res_restAuthorizer"
9395
)
9496

9597
val refreshDuration = config.userCacheRefreshInterval.toKotlinDuration()
@@ -113,6 +115,8 @@ class ServiceUserRepository : UserRepository {
113115
tokenUrl: Url?,
114116
clientId: String?,
115117
clientSecret: String?,
118+
scope: String?,
119+
audience: String?,
116120
): HttpClient = HttpClient(CIO) {
117121
if (tokenUrl != null) {
118122
install(Auth) {
@@ -121,6 +125,8 @@ class ServiceUserRepository : UserRepository {
121125
tokenUrl.toString(),
122126
clientId,
123127
clientSecret,
128+
scope,
129+
audience
124130
).copyWithEnv("MANAGEMENT_PORTAL"),
125131
baseUrl.host,
126132
)

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/user/ServiceUserRepositoryLegacy.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public class ServiceUserRepositoryLegacy implements UserRepository {
6464
private static final Duration CONNECTION_TIMEOUT = Duration.ofSeconds(60);
6565
private static final Duration CONNECTION_READ_TIMEOUT = Duration.ofSeconds(90);
6666

67+
private static final String CLIENT_AUDIENCE = "res_restAuthorizer";
68+
6769
private final OkHttpClient client;
6870
private final Map<String, OAuth2UserCredentials> cachedCredentials;
6971
private final AtomicReference<Instant> nextFetch = new AtomicReference<>(MIN_INSTANT);
@@ -76,6 +78,17 @@ public class ServiceUserRepositoryLegacy implements UserRepository {
7678

7779
public ServiceUserRepositoryLegacy() {
7880
this.client = new OkHttpClient.Builder()
81+
.addInterceptor(chain -> {
82+
Request original = chain.request();
83+
HttpUrl originalUrl = original.url();
84+
HttpUrl newUrl = originalUrl.newBuilder()
85+
.addQueryParameter("audience", CLIENT_AUDIENCE)
86+
.build();
87+
Request newRequest = original.newBuilder()
88+
.url(newUrl)
89+
.build();
90+
return chain.proceed(newRequest);
91+
})
7992
.connectTimeout(CONNECTION_TIMEOUT)
8093
.readTimeout(CONNECTION_READ_TIMEOUT)
8194
.build();

kafka-connect-oura-source/src/main/java/org/radarbase/connect/rest/oura/user/OuraServiceUserRepository.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ class OuraServiceUserRepository : OuraUserRepository() {
9090
tokenUrl = URLBuilder(config.ouraUserRepositoryTokenUrl.toString()).build(),
9191
clientId = config.ouraUserRepositoryClientId,
9292
clientSecret = config.ouraUserRepositoryClientSecret,
93+
scope = "SUBJECT.READ MEASUREMENT.CREATE",
94+
audience = "res_restAuthorizer"
9395
)
9496

9597
userCache =
@@ -111,6 +113,8 @@ class OuraServiceUserRepository : OuraUserRepository() {
111113
tokenUrl: Url?,
112114
clientId: String?,
113115
clientSecret: String?,
116+
scope: String?,
117+
audience: String?,
114118
): HttpClient =
115119
HttpClient(CIO) {
116120
if (tokenUrl != null) {
@@ -120,6 +124,8 @@ class OuraServiceUserRepository : OuraUserRepository() {
120124
tokenUrl.toString(),
121125
clientId,
122126
clientSecret,
127+
scope,
128+
audience
123129
).copyWithEnv("MANAGEMENT_PORTAL"),
124130
baseUrl.host,
125131
)

kafka-connect-oura-source/src/main/java/org/radarbase/connect/rest/oura/user/OuraServiceUserRepositoryLegacy.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public class OuraServiceUserRepositoryLegacy extends OuraUserRepository {
7878
private static final Duration CONNECTION_TIMEOUT = Duration.ofSeconds(60);
7979
private static final Duration CONNECTION_READ_TIMEOUT = Duration.ofSeconds(90);
8080

81+
private static final String CLIENT_AUDIENCE = "res_restAuthorizer";
82+
8183
private final OkHttpClient client;
8284
private final Map<String, OAuth2UserCredentials> cachedCredentials;
8385
private final AtomicReference<Instant> nextFetch = new AtomicReference<>(MIN_INSTANT);
@@ -90,6 +92,17 @@ public class OuraServiceUserRepositoryLegacy extends OuraUserRepository {
9092

9193
public OuraServiceUserRepositoryLegacy() {
9294
this.client = new OkHttpClient.Builder()
95+
.addInterceptor(chain -> {
96+
Request original = chain.request();
97+
HttpUrl originalUrl = original.url();
98+
HttpUrl newUrl = originalUrl.newBuilder()
99+
.addQueryParameter("audience", CLIENT_AUDIENCE)
100+
.build();
101+
Request newRequest = original.newBuilder()
102+
.url(newUrl)
103+
.build();
104+
return chain.proceed(newRequest);
105+
})
93106
.connectTimeout(CONNECTION_TIMEOUT)
94107
.readTimeout(CONNECTION_READ_TIMEOUT)
95108
.build();

0 commit comments

Comments
 (0)