spring-cloud / spring-cloud/spring-cloud-vault
HttpMessageConverterExtractor (v. 5.3.22) not respecting response class / responds type of VaultResponses
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 291
- Forks
- 152
- Merge moyen
- 11 h 24 min
- PR mergées (30 j)
- 3
Description
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.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par VaultTemplate.read(..., SomeClass.class), VaultResponseSupport et l’appel à HttpMessageConverterExtractor montré dans le rapport ; reproduisez le problème avec un backend Vault KV2 et examinez le responseType transmis à l’extracteur. Suivez les tests existants de conversion des réponses et ajoutez une couverture montrant que la classe demandée est conservée et que ses données sont renseignées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, spring, spring-boot
- Domaine
- backend, security
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100