Skip to content

Commit 21d5311

Browse files
graziangmposolda
authored andcommitted
Remove saml2 support for standard token exchange v2
Closes #37121 Signed-off-by: Giuseppe Graziano <[email protected]>
1 parent 5b441ee commit 21d5311

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

services/src/main/java/org/keycloak/protocol/oidc/tokenexchange/StandardTokenExchangeProvider.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,13 @@ protected Response exchangeClientToOIDCClient(UserModel targetUser, UserSessionM
267267
return cors.add(Response.ok(res, MediaType.APPLICATION_JSON_TYPE));
268268
}
269269

270+
@Override
271+
protected Response exchangeClientToSAML2Client(UserModel targetUser, UserSessionModel targetUserSession, String requestedTokenType, List<ClientModel> targetAudienceClients) {
272+
event.detail(Details.REASON, "requested_token_type unsupported");
273+
event.error(Errors.INVALID_REQUEST);
274+
throw new CorsErrorResponseException(cors, OAuthErrorException.INVALID_REQUEST, "requested_token_type unsupported", Response.Status.BAD_REQUEST);
275+
}
276+
270277
protected void checkRequestedAudiences(TokenManager.AccessTokenResponseBuilder responseBuilder) {
271278
if (params.getAudience() != null && (responseBuilder.getAccessToken().getAudience() == null ||
272279
responseBuilder.getAccessToken().getAudience().length < params.getAudience().size())) {
@@ -297,7 +304,7 @@ protected String getRequestedTokenType() {
297304
} else if (!requestedTokenType.equals(OAuth2Constants.ACCESS_TOKEN_TYPE) &&
298305
!requestedTokenType.equals(OAuth2Constants.REFRESH_TOKEN_TYPE) &&
299306
!requestedTokenType.equals(OAuth2Constants.ID_TOKEN_TYPE) &&
300-
!requestedTokenType.equals(OAuth2Constants.SAML2_TOKEN_TYPE)) { // TODO: SAML probably won't be supported?
307+
!requestedTokenType.equals(OAuth2Constants.SAML2_TOKEN_TYPE)) {
301308
event.detail(Details.REASON, "requested_token_type unsupported");
302309
event.error(Errors.INVALID_REQUEST);
303310
throw new CorsErrorResponseException(cors, OAuthErrorException.INVALID_REQUEST, "requested_token_type unsupported", Response.Status.BAD_REQUEST);

testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/tokenexchange/StandardTokenExchangeV2Test.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,10 @@ public void testRequestedTokenType() throws Exception {
175175
assertEquals(OAuthErrorException.INVALID_REQUEST, response.getError());
176176
assertEquals("requested_token_type unsupported", response.getErrorDescription());
177177

178-
//TODO: saml token type should not be supported
179-
// response = tokenExchange(accessToken, "requester-client", "secret", null, Map.of(OAuth2Constants.REQUESTED_TOKEN_TYPE, OAuth2Constants.SAML2_TOKEN_TYPE));
180-
// assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode());
181-
// assertEquals(OAuthErrorException.INVALID_REQUEST, response.getError());
182-
//assertEquals("requested_token_type unsupported", response.getErrorDescription());
178+
response = tokenExchange(accessToken, "requester-client", "secret", null, Map.of(OAuth2Constants.REQUESTED_TOKEN_TYPE, OAuth2Constants.SAML2_TOKEN_TYPE));
179+
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode());
180+
assertEquals(OAuthErrorException.INVALID_REQUEST, response.getError());
181+
assertEquals("requested_token_type unsupported", response.getErrorDescription());
183182

184183
response = tokenExchange(accessToken, "requester-client", "secret", null, Map.of(OAuth2Constants.REQUESTED_TOKEN_TYPE, "WRONG_TOKEN_TYPE"));
185184
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode());

0 commit comments

Comments
 (0)