I am investigating how I can use Vault 0.11.1 and Spring Vault 2.0.2.RELEASE. I have set up a dev Vault:
vault server -dev
and added some data
vault kv put secret/certs/jan cert=ABCD
which I can read with Spring Vault
@Autowired
private VaultOperations operations;
String path = "secret/data/certs/jan";
System.out.println(operations.read(path).getData());
note that, curiously, I have to insert "data/" in the path to find it again.
deleting the data works fine too:
operations.delete(path);
but writing data with
Secret secret = new Secret("ABCD");
operations.write(path, secret);
fails with
org.springframework.vault.VaultException: Status 400 secret/data/certs/jan: no data provided
Secret is a simple bean:
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Secret {
String cert;
}
and the jason conversion seems to go fine:
DEBUG org.springframework.web.client.RestTemplate - Writing [Secret(cert=ABCD)] using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@add0edd]
Simply trying to write a String
operations.write(path, "foo=bar");
also fails:
Status 400 secret/data/certs/jan: failed to parse JSON input: invalid character 'o' in literal false (expecting 'a')