This commit is contained in:
Joe Grandja 2018-09-04 15:23:11 -04:00 committed by Rob Winch
parent 3b480a3a05
commit dfd572a4d2
2 changed files with 15 additions and 45 deletions

View File

@ -54,7 +54,7 @@ public class OAuth2ErrorResponseErrorHandler implements ResponseErrorHandler {
// A Bearer Token Error may be in the WWW-Authenticate response header
// See https://tools.ietf.org/html/rfc6750#section-3
OAuth2Error oauth2Error = this.readErrorFromWwwAuthenticate(response.getHeaders());
OAuth2Error oauth2Error = this.readErrorFromWwwAuthenticate(response.getHeaders());
if (oauth2Error == null) {
oauth2Error = this.oauth2ErrorConverter.read(OAuth2Error.class, response);
}

View File

@ -15,16 +15,14 @@
*/
package org.springframework.security.oauth2.client.userinfo;
import org.junit.Before;
import org.junit.Test;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.TestClientRegistrations;
import org.springframework.security.oauth2.core.AuthenticationMethod;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.util.MultiValueMap;
@ -43,35 +41,15 @@ import static org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VAL
*/
public class OAuth2UserRequestEntityConverterTests {
private OAuth2UserRequestEntityConverter converter = new OAuth2UserRequestEntityConverter();
private OAuth2UserRequest userRequest;
@Before
public void setup() {
ClientRegistration clientRegistration = ClientRegistration.withRegistrationId("registration-1")
.clientId("client-1")
.clientSecret("secret")
.clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUriTemplate("https://client.com/callback/client-1")
.scope("read", "write")
.authorizationUri("https://provider.com/oauth2/authorize")
.tokenUri("https://provider.com/oauth2/token")
.userInfoUri("https://provider.com/user")
.userInfoAuthenticationMethod(AuthenticationMethod.HEADER)
.userNameAttributeName("id")
.build();
OAuth2AccessToken accessToken = new OAuth2AccessToken(
OAuth2AccessToken.TokenType.BEARER, "access-token-1234", Instant.now(),
Instant.now().plusSeconds(3600), new LinkedHashSet<>(Arrays.asList("read", "write")));
this.userRequest = new OAuth2UserRequest(clientRegistration, accessToken);
}
@SuppressWarnings("unchecked")
@Test
public void convertWhenAuthenticationMethodHeaderThenGetRequest() {
RequestEntity<?> requestEntity = this.converter.convert(this.userRequest);
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build();
OAuth2UserRequest userRequest = new OAuth2UserRequest(
clientRegistration, this.createAccessToken());
ClientRegistration clientRegistration = this.userRequest.getClientRegistration();
RequestEntity<?> requestEntity = this.converter.convert(userRequest);
assertThat(requestEntity.getMethod()).isEqualTo(HttpMethod.GET);
assertThat(requestEntity.getUrl().toASCIIString()).isEqualTo(
@ -80,17 +58,17 @@ public class OAuth2UserRequestEntityConverterTests {
HttpHeaders headers = requestEntity.getHeaders();
assertThat(headers.getAccept()).contains(MediaType.APPLICATION_JSON_UTF8);
assertThat(headers.getFirst(HttpHeaders.AUTHORIZATION)).isEqualTo(
"Bearer " + this.userRequest.getAccessToken().getTokenValue());
"Bearer " + userRequest.getAccessToken().getTokenValue());
}
@SuppressWarnings("unchecked")
@Test
public void convertWhenAuthenticationMethodFormThenPostRequest() {
ClientRegistration clientRegistration = this.from(this.userRequest.getClientRegistration())
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration()
.userInfoAuthenticationMethod(AuthenticationMethod.FORM)
.build();
OAuth2UserRequest userRequest = new OAuth2UserRequest(
clientRegistration, this.userRequest.getAccessToken());
clientRegistration, this.createAccessToken());
RequestEntity<?> requestEntity = this.converter.convert(userRequest);
@ -105,21 +83,13 @@ public class OAuth2UserRequestEntityConverterTests {
MultiValueMap<String, String> formParameters = (MultiValueMap<String, String>) requestEntity.getBody();
assertThat(formParameters.getFirst(OAuth2ParameterNames.ACCESS_TOKEN)).isEqualTo(
this.userRequest.getAccessToken().getTokenValue());
userRequest.getAccessToken().getTokenValue());
}
private ClientRegistration.Builder from(ClientRegistration registration) {
return ClientRegistration.withRegistrationId(registration.getRegistrationId())
.clientId(registration.getClientId())
.clientSecret(registration.getClientSecret())
.clientAuthenticationMethod(registration.getClientAuthenticationMethod())
.authorizationGrantType(registration.getAuthorizationGrantType())
.redirectUriTemplate(registration.getRedirectUriTemplate())
.scope(registration.getScopes())
.authorizationUri(registration.getProviderDetails().getAuthorizationUri())
.tokenUri(registration.getProviderDetails().getTokenUri())
.userInfoUri(registration.getProviderDetails().getUserInfoEndpoint().getUri())
.userNameAttributeName(registration.getProviderDetails().getUserInfoEndpoint().getUserNameAttributeName())
.clientName(registration.getClientName());
private OAuth2AccessToken createAccessToken() {
OAuth2AccessToken accessToken = new OAuth2AccessToken(
OAuth2AccessToken.TokenType.BEARER, "access-token-1234", Instant.now(),
Instant.now().plusSeconds(3600), new LinkedHashSet<>(Arrays.asList("read", "write")));
return accessToken;
}
}