Skip to content

Instantly share code, notes, and snippets.

@itzg
Created June 16, 2017 02:12
Show Gist options
  • Save itzg/2523cb9a0f153551ea751c2e3a7e2ed0 to your computer and use it in GitHub Desktop.
Save itzg/2523cb9a0f153551ea751c2e3a7e2ed0 to your computer and use it in GitHub Desktop.
package config;
import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext;
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
class BearerFixOAuth2ClientContext extends DefaultOAuth2ClientContext {
@Override
public void setAccessToken(OAuth2AccessToken accessToken) {
if ("bearer".equals(accessToken.getTokenType())) {
final DefaultOAuth2AccessToken fixedToken = new DefaultOAuth2AccessToken(accessToken);
fixedToken.setTokenType("Bearer");
super.setAccessToken(fixedToken);
} else {
super.setAccessToken(accessToken);
}
}
}
package config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.OAuth2ClientContext;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails;
import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
import org.springframework.security.oauth2.common.AuthenticationScheme;
@Configuration
public class BitBucketClientConfig {
private final BitBucketProperties bitBucketProperties;
@Autowired
public BitBucketClientConfig(BitBucketProperties bitBucketProperties) {
this.bitBucketProperties = bitBucketProperties;
}
@Bean
public OAuth2ProtectedResourceDetails bitbucketDetails() {
final ClientCredentialsResourceDetails resourceDetails =
new ClientCredentialsResourceDetails();
resourceDetails.setId("bitbucket");
resourceDetails.setAccessTokenUri(bitBucketProperties.getAccessTokenUri());
resourceDetails.setClientId(bitBucketProperties.getConsumerKey());
resourceDetails.setClientSecret(bitBucketProperties.getConsumerSecret());
resourceDetails.setAuthenticationScheme(AuthenticationScheme.header);
return resourceDetails;
}
@Bean
public OAuth2ClientContext bitbucketContext() {
return new BearerFixOAuth2ClientContext();
}
@Bean
public OAuth2RestTemplate bitBucketRestTemplate(RestTemplateBuilder restTemplateBuilder) {
final OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(bitbucketDetails(), bitbucketContext());
return restTemplateBuilder
.rootUri(bitBucketProperties.getBaseUrl())
.configure(restTemplate);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment