spring-cloud / spring-cloud/spring-cloud-vault
HttpMessageConverterExtractor (v. 5.3.22) not respecting response class / responds type of VaultResponses
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 291
- Fork
- 152
- Merge medio
- 11h 24m
- PR unite (30g)
- 3
Descrizione
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.

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);
}
}

in fact you can even see that - whatever is passed into Type responseType field isn't a class but an instance of VaultResponses.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Iniziare con VaultTemplate.read(..., SomeClass.class), VaultResponseSupport e la chiamata a HttpMessageConverterExtractor mostrata nel report; riprodurre il problema con un backend Vault KV2 e analizzare il responseType passato all’estrattore. Seguire i test esistenti sulla conversione delle risposte e aggiungere una copertura che dimostri che la classe richiesta viene preservata e che i suoi dati vengono popolati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java, spring, spring-boot
- Ambito
- backend, security
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100