Forked from itzg/BearerFixOAuth2ClientContext.java
Created
September 16, 2019 04:23
-
-
Save virtualadrian/a3c1e8fe786dbf453fbfa161e6a2a061 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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