spring-cloud / spring-cloud/spring-cloud-vault

HttpMessageConverterExtractor (v. 5.3.22) not respecting response class / responds type of VaultResponses

Abierto
#653 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

status: waiting-for-feedback
Lenguaje dominante
Java
Estrellas
291
Forks
152
Merge medio
11 h 24 min
PR fusionados (30 d)
3

Descripción

spring cloud version: 2021.0.3
spring version: 2.7.3 (Spring boot starter)

the vault library doesn't seem to be respecting the response type as it passes it in to HttpMessageConverterExtractor
internally.

** note** please look at the screenshots of my debugger - you will see that HttpMessageConverterExtractor cannot properly parse VaultResponses

Ex:

public class SomeClass {
}
@SpringBootApplication
public class VaultdebugApplication {
	@Bean void createBean() {
		List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
		messageConverters.add(new ByteArrayHttpMessageConverter());
		messageConverters.add(new StringHttpMessageConverter());
		messageConverters.add(new ResourceHttpMessageConverter(false));
		HttpMessageConverterExtractor x = new HttpMessageConverterExtractor(SomeClass.class, messageConverters);
	}
	public static void main(String[] args) {
		SpringApplication.run(VaultdebugApplication.class, args);
	}
}

the above works - HttpMessageConverterExtractor recognizes SomeClass.class as the response type one I trace it through the debugger.

image

however - when I try to read a secret from a vault Versioned backend (kv2) for whatever reason running the debugger at that same place shows that HttpMessageConverterExtractor will not recognize SomeClass.class.

@SpringBootApplication
public class VaultdebugApplication {
	@Bean
	public Secrets secrets(VaultTemplate operations) {
		VaultResponseSupport<SomeClass> response = operations.read("some/vault/path", SomeClass.class);
		System.out.println(response.getRequiredData()); // results in null
		System.out.println(response.getData()); // results in null

		return null;
	}
	public static void main(String[] args) {
		SpringApplication.run(VaultdebugApplication.class, args);
	}
}

image

in fact you can even see that - whatever is passed into Type responseType field isn't a class but an instance of VaultResponses.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comience con VaultTemplate.read(..., SomeClass.class), VaultResponseSupport y la llamada a HttpMessageConverterExtractor mostrada en el informe; reproduzca el problema con un backend Vault KV2 e inspeccione el responseType pasado al extractor. Rastree las pruebas existentes de conversión de respuestas y añada cobertura que demuestre que la clase solicitada se conserva y que sus datos se rellenan.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java, spring, spring-boot
Área
backend, security
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.