0

Spring boot-2.3.10, Spring Cloud Gcp: 1.2.8

I'm trying to access specific image pattern **(/resources/images/specific_folder/****) from GC Storage. For that I wrote the resource handler as shown below:

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("Setting the resource location {}", gcStorageLocation);
        registry.addResourceHandler("/resources/images/specific_folder/**").addResourceLocations("gs:bucket_name/storage/images/specific_folder/").setCachePeriod(3600).resourceChain(true)
                .addResolver(new GcStorageResolver());
    }

GcStorageResolver.java extends AbstractResourceResolver.java

@Override
    protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends Resource> locations,
            ResourceResolverChain chain) {
        log.info("resolveResourceInternal called for request: {}, requestPath: {}", request.getRequestURL(), requestPath);
        return getResource(requestPath, request, locations);
    }

I verified that a valid GoogleStorageResource is being returned along with credential. But somewhere in the spring chain, I'm getting the below error:

2021-06-25 15:40:23.366 ERROR 4676 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] 175 : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.google.cloud.storage.StorageException: Error parsing token refresh response. Expected value access_token not found.] with root cause

java.io.IOException: Error parsing token refresh response. Expected value access_token not found. at com.google.auth.oauth2.OAuth2Utils.validateString(OAuth2Utils.java:113) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:449) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:157) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:145) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.auth.oauth2.ServiceAccountCredentials.getRequestMetadata(ServiceAccountCredentials.java:603) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.auth.http.HttpCredentialsAdapter.initialize(HttpCredentialsAdapter.java:91) ~[google-auth-library-oauth2-http-0.22.1.jar:?] at com.google.cloud.http.HttpTransportOptions$1.initialize(HttpTransportOptions.java:159) ~[google-cloud-core-http-1.94.0.jar:1.94.0] at com.google.cloud.http.CensusHttpModule$CensusHttpRequestInitializer.initialize(CensusHttpModule.java:109) ~[google-cloud-core-http-1.94.0.jar:1.94.0] at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:88) ~[google-http-client-1.38.0.jar:1.38.0]

Not sure what's going on here. Any pointers?

spencergibb
  • 24,471
  • 6
  • 69
  • 75
Sameer Malhotra
  • 424
  • 3
  • 12
  • 29

0 Answers0