in proxy/lib/proxy/proxy.go [327:340]
func (s *Service) fetchAccessTokenForSA(ctx context.Context) (string, time.Time, error) {
resp, err := s.iamClient.GenerateAccessToken(ctx, &credentialspb.GenerateAccessTokenRequest{
Name: resourceName0fSA(s.opts.ServiceAccountName),
Scope: []string{"https://www.googleapis.com/auth/cloud-platform"},
Lifetime: timeutil.DurationProto(gcpAccessTokenLifeTime),
})
if err != nil {
return "", time.Time{}, err
}
// expires the token 10 seconds ahead as request may take some time to process and transfer to fhir backend.
return resp.AccessToken, resp.ExpireTime.AsTime().Add(-gcpAccessTokenFetchInterval), nil
}