Skip to content

DefaultOAuth2AuthorizationRequestResolver should exclude queryParams in baseUrl #5520

@mhyeon-lee

Description

@mhyeon-lee

Summary

To create redirect_uri in DefaultOAuth2AuthorizationRequestResolver, queryParam is included in the current request-based baseUrl.
So when binding to the redirectUriTemplate, the wrong type of redirect_uri may be created.

Actual Behavior

redirectUriTempate: "{baseUrl}/{action}/oauth2/code/{registrationId}"

request: http://localhost/oauth2/authorization/registration-1?foo=bar
redirect_uri: http://localhost?foo=bar/login/oauth2/code/registration-1

Expected Behavior

redirect_uri: http://localhost/login/oauth2/code/registration-1

Configuration

  • The following tests fail.
@Test
public void resolveWhenAuthorizationRequestRedirectUriTemplatedThenRedirectUriExpandedExcludesQueryString() {
	ClientRegistration clientRegistration = this.registration2;
	String requestUri = this.authorizationRequestBaseUri + "/" + clientRegistration.getRegistrationId();
	MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
	request.setServletPath(requestUri);
	request.setQueryString("foo=bar");

	OAuth2AuthorizationRequest authorizationRequest = this.resolver.resolve(request);
	assertThat(authorizationRequest.getRedirectUri()).isEqualTo(
			"http://localhost/login/oauth2/code/" + clientRegistration.getRegistrationId());
}

Version

Metadata

Metadata

Assignees

Labels

in: oauth2An issue in OAuth2 modules (oauth2-core, oauth2-client, oauth2-resource-server, oauth2-jose)type: bugA general bug

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions