Skip to content

Commit e57d0f5

Browse files
PR Feedback, additional validation on oauth routes affected by the tenant id checks, update the client libraries to pass in the tenant id in request objects to preserve backwards compat, additional testing, and some cleanup
1 parent 28ae625 commit e57d0f5

1 file changed

Lines changed: 94 additions & 12 deletions

File tree

src/main/java/io/fusionauth/client/FusionAuthClient.java

Lines changed: 94 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,17 @@ public ClientResponse<DeviceApprovalResponse, Errors> approveDevice(String clien
423423
* @return The ClientResponse object.
424424
*/
425425
public ClientResponse<DeviceApprovalResponse, Errors> approveDeviceWithRequest(DeviceApprovalRequest request) {
426+
Map<String, List<String>> parameters = new HashMap<>();
427+
parameters.put("client_id", Arrays.asList(request.client_id));
428+
parameters.put("client_secret", Arrays.asList(request.client_secret));
429+
if (request.tenantId != null) {
430+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
431+
}
432+
parameters.put("token", Arrays.asList(request.token));
433+
parameters.put("user_code", Arrays.asList(request.user_code));
426434
return start(DeviceApprovalResponse.class, Errors.class)
427435
.uri("/oauth2/device/approve")
428-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
436+
.bodyHandler(new FormDataBodyHandler(parameters))
429437
.post()
430438
.go();
431439
}
@@ -626,9 +634,15 @@ public ClientResponse<AccessToken, OAuthError> clientCredentialsGrant(String cli
626634
* @return The ClientResponse object.
627635
*/
628636
public ClientResponse<AccessToken, OAuthError> clientCredentialsGrantWithRequest(ClientCredentialsGrantRequest request) {
637+
Map<String, List<String>> parameters = new HashMap<>();
638+
parameters.put("client_id", Arrays.asList(request.client_id));
639+
parameters.put("client_secret", Arrays.asList(request.client_secret));
640+
parameters.put("grant_type", Arrays.asList(request.grant_type));
641+
parameters.put("scope", Arrays.asList(request.scope));
642+
parameters.put("tenantId", Arrays.asList(request.tenantId));
629643
return startAnonymous(AccessToken.class, OAuthError.class)
630644
.uri("/oauth2/token")
631-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
645+
.bodyHandler(new FormDataBodyHandler(parameters))
632646
.post()
633647
.go();
634648
}
@@ -1855,9 +1869,16 @@ public ClientResponse<DeviceResponse, OAuthError> deviceAuthorize(String client_
18551869
* @return The ClientResponse object.
18561870
*/
18571871
public ClientResponse<DeviceResponse, OAuthError> deviceAuthorizeWithRequest(DeviceAuthorizationRequest request) {
1872+
Map<String, List<String>> parameters = new HashMap<>();
1873+
parameters.put("client_id", Arrays.asList(request.client_id));
1874+
parameters.put("client_secret", Arrays.asList(request.client_secret));
1875+
parameters.put("scope", Arrays.asList(request.scope));
1876+
if (request.tenantId != null) {
1877+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
1878+
}
18581879
return startAnonymous(DeviceResponse.class, OAuthError.class)
18591880
.uri("/oauth2/device_authorize")
1860-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
1881+
.bodyHandler(new FormDataBodyHandler(parameters))
18611882
.post()
18621883
.go();
18631884
}
@@ -1972,9 +1993,19 @@ public ClientResponse<AccessToken, OAuthError> exchangeOAuthCodeForAccessTokenUs
19721993
* @return The ClientResponse object.
19731994
*/
19741995
public ClientResponse<AccessToken, OAuthError> exchangeOAuthCodeForAccessTokenUsingPKCEWithRequest(OAuthCodePKCEAccessTokenRequest request) {
1996+
Map<String, List<String>> parameters = new HashMap<>();
1997+
parameters.put("client_id", Arrays.asList(request.client_id));
1998+
parameters.put("client_secret", Arrays.asList(request.client_secret));
1999+
parameters.put("code", Arrays.asList(request.code));
2000+
parameters.put("code_verifier", Arrays.asList(request.code_verifier));
2001+
parameters.put("grant_type", Arrays.asList(request.grant_type));
2002+
parameters.put("redirect_uri", Arrays.asList(request.redirect_uri));
2003+
if (request.tenantId != null) {
2004+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
2005+
}
19752006
return startAnonymous(AccessToken.class, OAuthError.class)
19762007
.uri("/oauth2/token")
1977-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2008+
.bodyHandler(new FormDataBodyHandler(parameters))
19782009
.post()
19792010
.go();
19802011
}
@@ -1987,9 +2018,16 @@ public ClientResponse<AccessToken, OAuthError> exchangeOAuthCodeForAccessTokenUs
19872018
* @return The ClientResponse object.
19882019
*/
19892020
public ClientResponse<AccessToken, OAuthError> exchangeOAuthCodeForAccessTokenWithRequest(OAuthCodeAccessTokenRequest request) {
2021+
Map<String, List<String>> parameters = new HashMap<>();
2022+
parameters.put("client_id", Arrays.asList(request.client_id));
2023+
parameters.put("client_secret", Arrays.asList(request.client_secret));
2024+
parameters.put("code", Arrays.asList(request.code));
2025+
parameters.put("grant_type", Arrays.asList(request.grant_type));
2026+
parameters.put("redirect_uri", Arrays.asList(request.redirect_uri));
2027+
parameters.put("tenantId", Arrays.asList(request.tenantId));
19902028
return startAnonymous(AccessToken.class, OAuthError.class)
19912029
.uri("/oauth2/token")
1992-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2030+
.bodyHandler(new FormDataBodyHandler(parameters))
19932031
.post()
19942032
.go();
19952033
}
@@ -2029,9 +2067,19 @@ public ClientResponse<AccessToken, OAuthError> exchangeRefreshTokenForAccessToke
20292067
* @return The ClientResponse object.
20302068
*/
20312069
public ClientResponse<AccessToken, OAuthError> exchangeRefreshTokenForAccessTokenWithRequest(RefreshTokenAccessTokenRequest request) {
2070+
Map<String, List<String>> parameters = new HashMap<>();
2071+
parameters.put("client_id", Arrays.asList(request.client_id));
2072+
parameters.put("client_secret", Arrays.asList(request.client_secret));
2073+
parameters.put("grant_type", Arrays.asList(request.grant_type));
2074+
parameters.put("refresh_token", Arrays.asList(request.refresh_token));
2075+
parameters.put("scope", Arrays.asList(request.scope));
2076+
if (request.tenantId != null) {
2077+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
2078+
}
2079+
parameters.put("user_code", Arrays.asList(request.user_code));
20322080
return startAnonymous(AccessToken.class, OAuthError.class)
20332081
.uri("/oauth2/token")
2034-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2082+
.bodyHandler(new FormDataBodyHandler(parameters))
20352083
.post()
20362084
.go();
20372085
}
@@ -2087,9 +2135,18 @@ public ClientResponse<AccessToken, OAuthError> exchangeUserCredentialsForAccessT
20872135
* @return The ClientResponse object.
20882136
*/
20892137
public ClientResponse<AccessToken, OAuthError> exchangeUserCredentialsForAccessTokenWithRequest(UserCredentialsAccessTokenRequest request) {
2138+
Map<String, List<String>> parameters = new HashMap<>();
2139+
parameters.put("client_id", Arrays.asList(request.client_id));
2140+
parameters.put("client_secret", Arrays.asList(request.client_secret));
2141+
parameters.put("grant_type", Arrays.asList(request.grant_type));
2142+
parameters.put("password", Arrays.asList(request.password));
2143+
parameters.put("scope", Arrays.asList(request.scope));
2144+
parameters.put("tenantId", Arrays.asList(request.tenantId));
2145+
parameters.put("user_code", Arrays.asList(request.user_code));
2146+
parameters.put("username", Arrays.asList(request.username));
20902147
return startAnonymous(AccessToken.class, OAuthError.class)
20912148
.uri("/oauth2/token")
2092-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2149+
.bodyHandler(new FormDataBodyHandler(parameters))
20932150
.post()
20942151
.go();
20952152
}
@@ -2315,9 +2372,13 @@ public ClientResponse<IntrospectResponse, OAuthError> introspectAccessToken(Stri
23152372
* @return The ClientResponse object.
23162373
*/
23172374
public ClientResponse<IntrospectResponse, OAuthError> introspectAccessTokenWithRequest(AccessTokenIntrospectRequest request) {
2375+
Map<String, List<String>> parameters = new HashMap<>();
2376+
parameters.put("client_id", Arrays.asList(request.client_id));
2377+
parameters.put("tenantId", Arrays.asList(request.tenantId));
2378+
parameters.put("token", Arrays.asList(request.token));
23182379
return startAnonymous(IntrospectResponse.class, OAuthError.class)
23192380
.uri("/oauth2/introspect")
2320-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2381+
.bodyHandler(new FormDataBodyHandler(parameters))
23212382
.post()
23222383
.go();
23232384
}
@@ -2345,9 +2406,12 @@ public ClientResponse<IntrospectResponse, OAuthError> introspectClientCredential
23452406
* @return The ClientResponse object.
23462407
*/
23472408
public ClientResponse<IntrospectResponse, OAuthError> introspectClientCredentialsAccessTokenWithRequest(ClientCredentialsAccessTokenIntrospectRequest request) {
2409+
Map<String, List<String>> parameters = new HashMap<>();
2410+
parameters.put("tenantId", Arrays.asList(request.tenantId));
2411+
parameters.put("token", Arrays.asList(request.token));
23482412
return startAnonymous(IntrospectResponse.class, OAuthError.class)
23492413
.uri("/oauth2/introspect")
2350-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
2414+
.bodyHandler(new FormDataBodyHandler(parameters))
23512415
.post()
23522416
.go();
23532417
}
@@ -4497,9 +4561,14 @@ public ClientResponse<Void, Void> retrieveUserCodeUsingAPIKey(String user_code)
44974561
* @return The ClientResponse object.
44984562
*/
44994563
public ClientResponse<Void, Void> retrieveUserCodeUsingAPIKeyWithRequest(RetrieveUserCodeUsingAPIKeyRequest request) {
4564+
Map<String, List<String>> parameters = new HashMap<>();
4565+
if (request.tenantId != null) {
4566+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
4567+
}
4568+
parameters.put("user_code", Arrays.asList(request.user_code));
45004569
return startAnonymous(Void.TYPE, Void.TYPE)
45014570
.uri("/oauth2/device/user-code")
4502-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
4571+
.bodyHandler(new FormDataBodyHandler(parameters))
45034572
.post()
45044573
.go();
45054574
}
@@ -4513,9 +4582,16 @@ public ClientResponse<Void, Void> retrieveUserCodeUsingAPIKeyWithRequest(Retriev
45134582
* @return The ClientResponse object.
45144583
*/
45154584
public ClientResponse<Void, Void> retrieveUserCodeWithRequest(RetrieveUserCodeRequest request) {
4585+
Map<String, List<String>> parameters = new HashMap<>();
4586+
parameters.put("client_id", Arrays.asList(request.client_id));
4587+
parameters.put("client_secret", Arrays.asList(request.client_secret));
4588+
if (request.tenantId != null) {
4589+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
4590+
}
4591+
parameters.put("user_code", Arrays.asList(request.user_code));
45164592
return startAnonymous(Void.TYPE, Void.TYPE)
45174593
.uri("/oauth2/device/user-code")
4518-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
4594+
.bodyHandler(new FormDataBodyHandler(parameters))
45194595
.post()
45204596
.go();
45214597
}
@@ -6067,9 +6143,15 @@ public ClientResponse<Void, Void> validateDevice(String user_code, String client
60676143
* @return The ClientResponse object.
60686144
*/
60696145
public ClientResponse<Void, Void> validateDeviceWithRequest(ValidateDeviceRequest request) {
6146+
Map<String, List<String>> parameters = new HashMap<>();
6147+
parameters.put("client_id", Arrays.asList(request.client_id));
6148+
if (request.tenantId != null) {
6149+
parameters.put("tenantId", Arrays.asList(request.tenantId.toString()));
6150+
}
6151+
parameters.put("user_code", Arrays.asList(request.user_code));
60706152
return startAnonymous(Void.TYPE, Void.TYPE)
60716153
.uri("/oauth2/device/validate")
6072-
.bodyHandler(new JSONBodyHandler(request, objectMapper()))
6154+
.bodyHandler(new FormDataBodyHandler(parameters))
60736155
.post()
60746156
.go();
60756157
}

0 commit comments

Comments
 (0)